[python官方文件]10&11標準庫概述(附generator介紹

橘子oly發表於2016-10-22

首先,對一些大型模組,可以使用內建函式:
1)dir(os) 得到os模組內部的所有函式
2) help(os)返回os模組的幫助資訊
os旗下的:os.chdir()  os.getcwd()【get current working directory】
sys旗下的:sys.argv[x]【返回命令列呼叫的第x個引數,其中第0個預設為模組名,sys.argv為list】
time旗下的:time.date()【time重點放在更有效的處理和格式化輸出】
math旗下的:math.pi  math.log(1024,2)=10 math.cos(x) mmath.random()
re模組:字串正則匹配
urllib2模組:urllib2.urlopen(website)
資料壓縮:zlib,gzip,bz2,zipfile等模組

輸出格式:
    repr模組:其中的repr()函式與str()不同的是:
            str()將值轉化為適於人閱讀的形式,而repr() 轉化為供直譯器讀取的形式
    pprint模組提供了列印的更美化更清晰的效果。
模板:
    string模組下的Template可以實現引數定製化,如:

>>> from string import Template
>>> t = Template('${village}folk send $$10 to $cause.')
>>> t.substitute(village='Nottingham', cause='the ditch fund')
'Nottinghamfolk send $10 to the ditch fund.'
多執行緒:
    高階模組threading可以實現多執行緒
        [注:我在windows下使用threading模組報錯了,linux下可以執行,大概該模組對windows不支援吧- -
列表工具:
    array模組:類似列表,但是僅僅儲存資料,更為緊湊。
    collections模組下的deque:佇列的實現,先進先出



在看著一部分的時候,還引申出了一個問題:
由range()和xrange()的區別,去了解生成器generator,再到yield,受益匪淺.

這篇文章 點這裡 關於生成器generator講得特別好。


range()返回的是一個陣列,當我們用 for i in range(x)時,產生一個迭代器iterator來訪問陣列中的所有元素。

xrange()返回的是一個生成器generator,生成器使用的是一遍迴圈一遍計算的機制。

當我們需要訪問一個較大的list的時候,用range()用可能會產生大於記憶體的list。

generator的產生除了通過xrange,還可以通過(), 如(i*i for i in range(10)), 不同於list使用的是[]。

對generator內部元素的訪問可以通過呼叫其next()方法,也可以用迭代器訪問(generator也是可迭代物件)。

generator的實現:yield方法,其實現原理是函式每次遇到yield就中斷返回,下次執行的時候從yield後繼續,函式的變數一直儲存。

【注:關於gennerator的更多知識參考生成器-廖雪峰的官方網站


相關文章