認(rèn)識(shí)模塊
對(duì)于模塊,在前面的一些舉例中,已經(jīng)涉及到了,比如曾經(jīng)有過:import random (獲取隨機(jī)數(shù)模塊)。為了能夠?qū)δK有一個(gè)清晰的了解,首先要看看什么模塊,這里選取官方文檔中對(duì)它的定義:
都是洋碼子,翻譯一下不?不!還是只說要點(diǎn):
•模塊就是一個(gè)含有python語句的文件
•模塊名就是文件名(不要擴(kuò)展名.py)
那么,那個(gè)import random的文件在哪里呢?
用曾經(jīng)講過的那個(gè)法寶:help()函數(shù)看看:
然后就出現(xiàn):
FILE
/usr/local/lib/python2.7/random.py
MODULE DOCS
http://docs.python.org/library/random
DESCRIPTION
...
這里非常明顯的告訴我們,random模塊的文件就是: /usr/local/lib/python2.7/random.py(注意:這個(gè)地址是我的計(jì)算機(jī)中的地址,可能跟看官的不一樣,特別是如果看官用的是windows,肯定跟我這個(gè)不一樣了。)
看官這時(shí)候可能有疑問了,import是怎么找到那個(gè)文件的?類似文件怎么寫?不用著急,這些我都會(huì)一一道來。
標(biāo)準(zhǔn)庫
看了前面的random這個(gè)例子,看官可能立刻想到一個(gè)問題:是不是已經(jīng)有人把很多常用的功能都寫成模塊了?然后使用者只需要用類似方法調(diào)用即可。的確是,比如上面顯示的,就不是某個(gè)程序員在使用的時(shí)候自己編寫的,而是在安裝python的時(shí)候,就被安裝在了計(jì)算機(jī)里面。觀察那個(gè)文件存儲(chǔ)地址,就知道了。
我根據(jù)上面得到的地址,列出/usr/local/lib/python2.7/里面的文件,這些文件就是類似random的模塊,由于是python安裝就有的,算是標(biāo)配吧,給它們一個(gè)名字“標(biāo)準(zhǔn)模塊庫”,簡稱“標(biāo)準(zhǔn)庫”。

這張圖列出了很少一部分存在這個(gè)目錄中的模塊文件。
Python的標(biāo)準(zhǔn)庫(standard library)是Python的一個(gè)組成部分,也是Python為的利器,可以讓編程事半功倍。
如果看官有時(shí)間,請(qǐng)經(jīng)常訪問:https://docs.python.org/2/library/,這里列出了所有標(biāo)準(zhǔn)庫的使用方法。
有一點(diǎn),請(qǐng)看官特別注意,對(duì)于標(biāo)準(zhǔn)庫而言,由于內(nèi)容太多,恐怕是記不住的。也不用可以的去記憶,只需要知道有這么一個(gè)東西。如果在編寫程序的時(shí)候,一定要想到,對(duì)于某個(gè)東西,是不是會(huì)有標(biāo)準(zhǔn)庫支持呢?然后就到google或者上面給出的地址上搜索。
舉例:
>>> help(sys.stdin) #這是查看某個(gè)模塊方法具體內(nèi)容的方式
標(biāo)準(zhǔn)庫,在編程中經(jīng)常用到。這里不贅述。只要看官能夠知道在哪里找、如何找所需要的標(biāo)準(zhǔn)庫即可。
自己編寫模塊
看官可能比較喜歡“自己動(dòng)手,豐衣足食”(雖然真的不一定是豐衣足食),在某些必要的時(shí)候,還真得自己動(dòng)手寫一些模塊。那么怎么編寫模塊呢?
前面已經(jīng)交代,模塊就是.py文件,所以,只要將某些語句寫到一個(gè).py文件中,它就是一個(gè)模塊了。沒有什么太多的秘密。
在某個(gè)目錄下面建立了一個(gè)文件,名稱是:mmmm.py,如下圖所示,然后編輯這個(gè)文件內(nèi)容。編輯好后保存。
代碼是文件內(nèi)容:
圖示是文件所在目錄,并且在該目錄下打開了python的交互模式(我這是在ubuntu下,看官是別的操作系統(tǒng)的化,注意路徑,如果遇到問題,可以暫時(shí)擱置,看下文)。

從圖中可以看出,當(dāng)前目錄中有這個(gè)文件:mmmm.py
在交互模式下,仿照對(duì)標(biāo)準(zhǔn)庫模塊的操作方式:
再看后面的:my_name,pythoner,web,都是我在內(nèi)容中自己寫的。
web是模塊mmmm中的一個(gè)通過賦值語句建立的變量,在這里,它編程了mmmm的屬性,能夠通過點(diǎn)號(hào)運(yùn)算訪問,其實(shí)不僅僅是這類型的賦值,其它通過def,class等,都能做為mmmm模塊的屬性。
當(dāng)然,跟操作標(biāo)準(zhǔn)庫一樣,一樣能夠使用help()來看看這些屬性的具體內(nèi)容:
Help on function my_name in module mmmm:
my_name(name)
>>> help(mmmm.pythoner)
Help on class pythoner in module mmmm:
class pythoner
| Methods defined here:
|
| __init__(self, lang)
|
| programmer(self)
怎么調(diào)用呢?這樣即可:
當(dāng)調(diào)用模塊中的函數(shù)的時(shí)候,用模塊的名稱(import mmmm)+點(diǎn)號(hào)+函數(shù)(注意,函數(shù)后面要有括號(hào),如果有參數(shù),括號(hào)里面跟參數(shù)),即 module_name.funciton(*args)
上面兩行,則是演示用綁定的方法調(diào)用模塊中的類以及類的實(shí)例方法。跟以往的相比較,似乎都是在前面多了一個(gè)mmmm.
如果感覺這個(gè)mmmm比較麻煩,可以用from,具體是這樣的:
這次不用總寫那么mmmm了。兩種方式,哪個(gè)更好呢?沒有定論??垂僭谝院蟮膶?shí)踐中體會(huì),什么時(shí)候用什么方式。
上面用from mmmm import ,其中符號(hào),表示將所有的都import進(jìn)來,用這個(gè)方法,也可以只import一部分,如同:
這就是基本的import模塊方法??垂俚囊蓡?,還要存著。且聽下回分解。
新聞熱點(diǎn)
疑難解答
圖片精選