成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

分享一些提升編程效率的輪子

開發 后端
Python 是世界上最受歡迎的編程語言之一,只要你有需求,Python 就有對應的解決方案,僅 PyPI 就有 4.7 萬個庫,這些庫或模塊足夠簡單,開箱即用,是節省時間的利器。今天就來盤點一下 Python 非常實用的模塊或庫,可以直接提升編程效率。

 這里從字母 A 到 Z 的順序進行,有些屬于標準庫,可以直接導入使用,有些屬于第三方庫,需要 pip install 后使用。

[[392075]]

1、all or any

為什么 Python 如此流行,一個重要的原因就是 Python 的代碼是人類可讀的,生動形象的,比如 all or any 這個用法:

 

  1. x = [TrueTrueFalse
  2. if any(x): 
  3.     print("At least one True"
  4. if all(x): 
  5.     print("Not one False"
  6. if any(x) and not all(x): 
  7.     print("At least one True and one False"

上面的代碼,我相信完全不用注釋,你都能看懂,后續編程時不要忘了用。

2、bashplotlib[1]

正如的它的名字一樣,可以在 bash 控制臺下面畫圖,舉個🌰:現在我們有一個文本文件,里面一列數字,如何快速進行統計呢,直接使用 plot_hist

 

  1. In [17]: !head -n 5 data/exp.txt 
  2. 1.12578195876 
  3. 0.16026238021 
  4. 0.0392117875843 
  5. 0.968428864579 
  6. 0.334430039433 
  7.  
  8. In [18]: from bashplotlib.histogram import plot_hist 
  9.     ...: 
  10.  
  11. In [19]: plot_hist(f="data/exp.txt",showSummary=True
  12.  
  13.  451|  o 
  14.  427|  o 
  15.  403|  o 
  16.  380|  o 
  17.  356|  o 
  18.  332|  o 
  19.  309|  o 
  20.  285|  o 
  21.  261|  oo 
  22.  238|  oo 
  23.  214|  oo 
  24.  190|  oo 
  25.  166|  oo 
  26.  143|  oo 
  27.  119|  ooo 
  28.   95|  ooo 
  29.   72|  oooo 
  30.   48|  oooo 
  31.   24|  ooooo 
  32.    1| ooooooooooo 
  33.      ----------- 
  34.  
  35. ----------------------------------- 
  36. |             Summary             | 
  37. ----------------------------------- 
  38. |        observations: 1000       | 
  39. |       min value: 0.001718       | 
  40. |         mean : 0.988786         | 
  41. |       max value: 6.552654       | 
  42. ----------------------------------- 
  43.  
  44. In [20]: 

也可以直接使用命令行:

 

  1. (py38env) ➜  examples hist --file data/exp.txt 
  2.  
  3.  451|  o 
  4.  427|  o 
  5.  403|  o 
  6.  380|  o 
  7.  356|  o 
  8.  332|  o 
  9.  309|  o 
  10.  285|  o 
  11.  261|  oo 
  12.  238|  oo 
  13.  214|  oo 
  14.  190|  oo 
  15.  166|  oo 
  16.  143|  oo 
  17.  119|  ooo 
  18.   95|  ooo 
  19.   72|  oooo 
  20.   48|  oooo 
  21.   24|  ooooo 
  22.    1| ooooooooooo 
  23.      ----------- 
  24.  
  25. ----------------------------------- 
  26. |             Summary             | 
  27. ----------------------------------- 
  28. |        observations: 1000       | 
  29. |       min value: 0.001718       | 
  30. |         mean : 0.988786         | 
  31. |       max value: 6.552654       | 
  32. ----------------------------------- 
  33. (py38env) ➜  examples 

還可以使用 scatter 繪制 x、y 坐標,詳情請訪問 bashplotlib 文檔[2]

3、collections

Python 的基本數據類型很好用,但有時無法按照我們希望的那樣快速初始化。比如說我希望有一個字典,它的值是一個列表,定義好之后想直接插入數據,怎么辦?

通常會這樣:

 

  1. my_dict = {} 
  2.  
  3. if 'key' in  my_dict: 
  4.     my_dict['key'].append('something'
  5. else
  6.     my_dict['key'] = ['something'

有了 collections 可以簡化成這樣:

 

  1. from collections import defaultdict 
  2. my_dict = defaultdict(list) 
  3. my_dict['key'].append('something'

還有很多實用的類,比如:

 

 

 

詳細教程訪問 Python 官方文檔[3]。

4、dir

這是非常好用的內省函數。如果你想看一個 Python 類的內部屬性,可別忘了 dir 函數,比如說我想知道字符串都有哪些內置的函數,可以這樣:

 

  1. >>> dir("hello"
  2. ['__add__''__class__''__contains__''__delattr__''__dir__''__doc__''__eq__''__format__''__ge__''__getattribute__''__getitem__''__getnewargs__''__gt__''__hash__''__init__''__init_subclass__''__iter__''__le__''__len__''__lt__''__mod__''__mul__''__ne__''__new__''__reduce__''__reduce_ex__''__repr__''__rmod__''__rmul__''__setattr__''__sizeof__''__str__''__subclasshook__''capitalize''casefold''center''count''encode''endswith''expandtabs''find''format''format_map''index''isalnum''isalpha''isascii''isdecimal''isdigit''isidentifier''islower''isnumeric''isprintable''isspace''istitle''isupper''join''ljust''lower''lstrip''maketrans''partition''replace''rfind''rindex''rjust''rpartition''rsplit''rstrip''split''splitlines''startswith''strip''swapcase''title''translate''upper''zfill'

5、emoji

如果想用 Python 在字符界面下打印出一個表情包,別忘了這個:

 

  1. pip install emoji 

 

 

 

 

6、from __future__ import

想使用未來的功能,可以的,舉個例子,你現在用的是 Python2,但是想用 Python3 的 print 函數,可以!

 

  1. from __future__ import print_function 
  2. print("Hello World!"

7、geopy

假如要處理地理位置信息,可以使用這個,這是 google 的 api 接口,需要先申請 app key。

 

  1. pip install geopy 

 

  1. from geopy import GoogleV3 
  2. place = "suzhou" 
  3. location = GoogleV3().geocode(place) 
  4. print(location.address) 
  5. print(location.location) 

8、howdoi

你在終端編程,此時想查看下如何使用 git 的 undo commits,不想離開終端,可以直接在終端里面查詢 StackOverflow:

 

  1. $ pip install howdoi 
  2. $ howdoi undo commits in git 

 

 

 

howdoi 會爬取 StackOverflow 置頂的答案,偶爾也許不是最好的,但這已經足以讓你保持專注了,記得用英語關鍵字去檢索。

9、inspect

Python 的 inspect 模塊非常適合了解代碼背后發生的事情。你甚至可以 inspect 自己檢查自己!

下面的代碼示例使用 inspect.getsource()打印自己的源代碼。它還使用 inspect.getmodule()打印在其中定義了該模塊的模塊。代碼的最后一行打印出自己的行號。

 

 

 

 

10、map

簡單來說,map 函數的任務就是分發任務。

 

  1. x = [1, 2, 3] 
  2. y = map(lambda x : x + 1 , x) 
  3. # prints out [2,3,4] 
  4. print(list(y)) 

11、newspaper3k

如果你需要獲取新聞、文章、文本的元數據(metadata)做自然語言訓練,用這個就對了,可以大大提升你爬取網頁的效率。

 

  1. $ pip install newspaper3k 

 

  1. >>> from newspaper import Article 
  2. >>> url = 'http://www.bbc.co.uk/zhongwen/simp/chinese_news/2012/12/121210_hongkong_politics.shtml' 
  3.  
  4. >>> a = Article(url, language='zh') # Chinese 
  5.  
  6. >>> a.download() 
  7. >>> a.parse() 
  8.  
  9. >>> print(a.text[:150]) 
  10. 香港行政長官梁振英在各方壓力下就其大宅的違章建 
  11. 筑(僭建)問題到立法會接受質詢,并向香港民眾道歉。 
  12. 梁振英在星期二(12月10日)的答問大會開始之際 
  13. 在其演說中道歉,但強調他在違章建筑問題上沒有隱瞞的 
  14. 意圖和動機。 一些親北京陣營議員歡迎梁振英道歉, 
  15. 且認為應能獲得香港民眾接受,但這些議員也質問梁振英有 
  16.  
  17. >>> print(a.title) 
  18. 港特首梁振英就住宅違建事件道歉 

更多用法參考newspaper3k 文檔[4]。

12、pprint

全名叫 pretty print,意思就是漂亮的打印。比如說,對于一個復雜的字典,print 的效果是這樣的一坨:

 

  1. In [16]: print(users) 
  2. {'results': [{'gender''male''name': {'title''Mr''first''Fred''last''Cooper'}, 'location': {'street': {'number': 681, 'name''Victoria Street'}, 'city''Salisbury''state''Greater Manchester''country''United Kingdom''postcode''P1I 3XR''coordinates': {'latitude''5.9123''longitude''-22.2206'}, 'timezone': {'offset''-2:00''description''Mid-Atlantic'}}, 'email''fred.cooper@example.com''login': {'uuid''5261fb69-bc91-46ed-9e66-a4f6f51ff2ff''username''greenkoala692''password''teaser''salt''SVMfx7Z1''md5''e1d344cd5998cce8affbbdbeec358052''sha1''083f8b9fb7e3271293af8d058fdf919fe690fb1a''sha256''112e2d6838871ae2ca8aefb90c33f4850a537ee4d0d36c6f66bbcb5ed17b5da7'}, 'dob': {'date''1959-12-04T14:20:29.781Z''age': 62}, 'registered': {'date''2019-09-06T13:18:11.009Z''age': 2}, 'phone''016977 6452''cell''0794-684-745''id': {'name''NINO''value''NC 88 63 68 Q'}, 'picture': {'large''https://randomuser.me/api/portraits/men/40.jpg''medium''https://randomuser.me/api/portraits/med/men/40.jpg''thumbnail''https://randomuser.me/api/portraits/thumb/men/40.jpg'}, 'nat''GB'}], 'info': {'seed''48254d6ef48036b0''results': 1, 'page': 1, 'version''1.3'}} 

而 pprint 的效果是有層次感的:

 

  1. In [19]: from pprint import pprint 
  2.  
  3. In [20]: pprint(users) 
  4. {'info': {'page': 1, 
  5.           'results': 1, 
  6.           'seed''48254d6ef48036b0'
  7.           'version''1.3'}, 
  8.  'results': [{'cell''0794-684-745'
  9.               'dob': {'age': 62, 'date''1959-12-04T14:20:29.781Z'}, 
  10.               'email''fred.cooper@example.com'
  11.               'gender''male'
  12.               'id': {'name''NINO''value''NC 88 63 68 Q'}, 
  13.               'location': {'city''Salisbury'
  14.                            'coordinates': {'latitude''5.9123'
  15.                                            'longitude''-22.2206'}, 
  16.                            'country''United Kingdom'
  17.                            'postcode''P1I 3XR'
  18.                            'state''Greater Manchester'
  19.                            'street': {'name''Victoria Street''number': 681}, 
  20.                            'timezone': {'description''Mid-Atlantic'
  21.                                         'offset''-2:00'}}, 
  22.               'login': {'md5''e1d344cd5998cce8affbbdbeec358052'
  23.                         'password''teaser'
  24.                         'salt''SVMfx7Z1'
  25.                         'sha1''083f8b9fb7e3271293af8d058fdf919fe690fb1a'
  26.                         'sha256''112e2d6838871ae2ca8aefb90c33f4850a537ee4d0d36c6f66bbcb5ed17b5da7'
  27.                         'username''greenkoala692'
  28.                         'uuid''5261fb69-bc91-46ed-9e66-a4f6f51ff2ff'}, 
  29.               'name': {'first''Fred''last''Cooper''title''Mr'}, 
  30.               'nat''GB'
  31.               'phone''016977 6452'
  32.               'picture': {'large''https://randomuser.me/api/portraits/men/40.jpg'
  33.                           'medium''https://randomuser.me/api/portraits/med/men/40.jpg'
  34.                           'thumbnail''https://randomuser.me/api/portraits/thumb/men/40.jpg'}, 
  35.               'registered': {'age': 2, 'date''2019-09-06T13:18:11.009Z'}}]} 
  36.  
  37. In [21]: 

是不是清爽了許多?

13、queue

queue 模塊是標準庫實現的一個同步的隊列類,實現了多生產者、多消費者隊列。這特別適用于多線程間安全的交互消息。內部有三個非常常用的隊列:Queue、LifoQueue、PriorityQueue。這些類在編程中有多重要就不多說了,做一做 leetCode 你就知道了。這里[5]有一些如何使用的例子。

14、sh

Python 是一種很棒的腳本語言,有時使用 os 和 subprocess 可能會讓人有些頭疼。sh 庫提供了一種巧妙的選擇,可以像調用普通程序一樣調用任何程序,這對從 Python 內部進行自動化任務很有用。

 

  1. pip install sh 

 

  1. import sh 
  2. sh.pwd() 
  3. sh.mkdir('new_folder'
  4. sh.touch('new_file.txt'
  5. sh.whoami() 
  6. sh.echo('This is great!'

15、uuid

UUID 的全稱:Universally Unique Identifier,即通用唯一識別碼,通常作為數據庫的一個主鍵。

 

  1. In [26]: import uuid 
  2.     ...: user_id = uuid.uuid4() 
  3.     ...: print(user_id) 
  4. 12d0957b-18e5-4a4a-b5ee-d38e5f2789ce 

上述代碼會隨機產生 128 位的二進制位,基本上不可能出現重復,完全可以放心使用,即使重復,再生成一個就是了。

16、venv

Python 3 自帶的創建虛擬環境的模塊,不需要再單獨安裝 virtualenv。

 

  1. python -m venv my-project 
  2. source my-project/bin/activate 
  3. pip install all-the-modules  

17、YAML

YAML 的全稱是"YAML Ain't Markup Language",意思就是 YAML 不是標記語言。它是一種數據格式語言,并且是JSON的超集。

與 JSON 不同,它可以存儲更復雜的對象并引用其自己的元素,還可以編寫注釋,使其特別適合編寫配置文件。

PyYAML 模塊使您可以將 YAML 與 Python 一起使用。

安裝方式:

 

  1. pip install pyyaml 

比如說,我們有一段 yaml 格式的文本,可以快速轉換為 Python 對象:

 

  1. In [23]: import yaml 
  2.  
  3. In [24]: document = ""
  4.     ...:   a: 1 
  5.     ...:   b: 
  6.     ...:     c: 3 
  7.     ...:     d: 4 
  8.     ...: ""
  9.  
  10. In [25]: yaml.load(document,Loader=yaml.FullLoader) 
  11. Out[25]: {'a': 1, 'b': {'c': 3, 'd': 4}} 
  12.  
  13. In [26]: 

最后的話

以上就是 17 個 Python 非常實用的模塊或庫,可以大大提升你后續編程的效率。當然 Python 的類庫眾多,你也會有一些自己壓箱底的工具庫,請在下面留言,分享你自己喜歡的 Python 庫或者你需要的工具庫,一起討論,一起學習。

責任編輯:華軒 來源: Python七號
相關推薦

2018-02-06 11:10:27

iOS開發Xcode快捷鍵

2018-02-04 22:29:21

iOS開發

2022-06-28 10:58:21

工具Java

2013-07-02 09:43:02

編程策略

2013-07-02 10:18:20

編程編程策略

2022-05-27 08:40:27

java工具

2017-09-20 15:07:32

數據庫SQL注入技巧分享

2010-11-02 14:11:15

SilverlightWPF微軟開發

2015-12-04 10:04:53

2021-10-13 07:48:23

Options模式編程

2022-01-09 23:16:49

編程語言程序員

2015-08-17 15:53:58

Linux桌面

2021-10-31 07:36:17

前端JavaScript編程

2011-06-15 18:42:28

友情鏈接

2011-07-03 19:07:47

關鍵詞

2011-06-10 20:02:55

嵌入式開發

2018-07-23 15:55:28

協議自定義viewSwift

2011-08-31 10:54:25

Java性能

2018-06-08 08:50:35

編程語言并發編程

2011-09-13 09:41:59

Python
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日本在线视频一区二区 | 久久国产精品-久久精品 | 性生活毛片 | 久久国产欧美一区二区三区精品 | 精品久久久久国产 | 欧美亚洲另类丝袜综合网动图 | 亚洲一区中文字幕在线观看 | 国产91丝袜在线播放 | 可以在线看的黄色网址 | 成人超碰 | av黄色免费在线观看 | 欧美一级二级三级视频 | 在线观看av网站永久 | 亚洲一区 中文字幕 | 奇米四色在线观看 | 成人h片在线观看 | 中文字幕成人av | 91资源在线 | 欧美精品二区 | 亚洲成人中文字幕 | 久久国产免费看 | 日韩在线观看视频一区 | 999久久久免费精品国产 | 日韩成人在线网站 | 岛国视频| 国产精品99久久久久久宅男 | 国产精品成人国产乱 | 福利片在线 | 欧洲成人 | 在线观看中文视频 | 色婷婷国产精品综合在线观看 | 日韩一区三区 | 久久久久久成人 | 日韩电影一区二区三区 | 欧美激情久久久 | 国产精品美女视频 | 婷婷五月色综合 | 国产99精品 | 久久久久国产一区二区三区四区 | 日韩欧美不卡 | 欧美精品在线免费观看 |