眾所周知,Python內(nèi)建了許多函數(shù)模塊,并且我們可能還會(huì)安裝許多第三方模塊等等。
在平南等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站制作、成都網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作按需定制設(shè)計(jì),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站制作,全網(wǎng)整合營銷推廣,成都外貿(mào)網(wǎng)站制作,平南網(wǎng)站建設(shè)費(fèi)用合理。
下面以getpass為例查看其源代碼。
1.help(getpass)
輸入該命令找到file路徑,并且可以查看其其提供的功能。
2.利用getpass.__file__查看位置
最后找到該文件,用記事本或其他編輯器打開即可。
3.PyCharm編輯器
在該類或方法上按住“ctr+鼠標(biāo)左鍵”可以快速查看源代碼。
4.dir(對象名)
該方法可以快速查看有哪些方法。
想要查看每個(gè)功能的解釋,用help(type(對象名))?
python學(xué)習(xí)網(wǎng),大量的免費(fèi)python視頻教程,歡迎在線學(xué)習(xí)!
模塊是一個(gè)概念,它包含 1~N 個(gè)文件,如果文件是 Python 代碼文件(就是.py 結(jié)尾的文件),那每個(gè)文件中可以包含函數(shù),類等內(nèi)容。
在公司工作,很多項(xiàng)目都是協(xié)作開發(fā)來完成,一個(gè)項(xiàng)目后面可能存在很多工程師,為了開發(fā)方便,每個(gè)人負(fù)責(zé)的功能函數(shù)或者類都盡量封裝在一個(gè) 模塊 中,模塊英文請記住 module ,有的地方叫做 庫 ,也有的地方叫做 包(package) ,對于現(xiàn)階段的你來說,當(dāng)成一樣的內(nèi)容就好。
互聯(lián)網(wǎng)上存在大量的開源模塊,這些模塊最大的優(yōu)勢就是免費(fèi),很多時(shí)候使用這些模塊能極大的提高編碼效率,這也是很多人喜歡 Python 的原因之一。
模塊學(xué)習(xí)的過程,不能按照語法結(jié)構(gòu)來學(xué)習(xí),它是一種抽象的知識,是一種代碼的設(shè)計(jì)方式。例如將寫好的函授放到模塊中。
接下來就將上面的函數(shù)整合到一個(gè)模塊中去,建立一個(gè)新的文件 stir_fry.py 然后將兩個(gè)函數(shù)復(fù)制到新的文件中。
stir_fry.py 文件包含那兩個(gè)函數(shù)
好了,完成任務(wù),一個(gè)模塊創(chuàng)建完畢了,這個(gè) stir_fry.py 文件就是一個(gè)模塊。
你現(xiàn)在腦中肯定出現(xiàn)黑人問號臉了,What?這就完了。是的,完了,一個(gè)低配模塊完成。
下面就可以拿著這個(gè)模塊給別人使用去了。會(huì)寫模塊成為大佬之后,就可以給新入行的菜鳥指點(diǎn)江山,寫模塊了。
在另一個(gè)文件中,可以通過 import 模塊名 導(dǎo)入一個(gè)模塊,例如導(dǎo)入剛才創(chuàng)建的 stir_fry 模塊。
注意要新建一個(gè)文件,文件名隨意但是不要與模塊同名。
如果想要使用模塊中的函數(shù),只需要參考下述語法格式即可。
通過 stir_fry 調(diào)用模塊中的函數(shù)。
當(dāng)通過 import stir_fry 導(dǎo)入模塊之后,該模塊內(nèi)的所有函數(shù)都一次性導(dǎo)入到新文件中了。
如果不想導(dǎo)入模塊的所有函數(shù),而只導(dǎo)入某個(gè)函數(shù),使用一下語法可以解決該問題。
修改上一節(jié)案例:
直接導(dǎo)入模塊中的函數(shù),使用時(shí)不需要通過 模塊名. 的方式調(diào)用,直接書寫函數(shù)名即可。
導(dǎo)入模塊中多個(gè)函數(shù)
語法格式如下:
導(dǎo)入模塊所有函數(shù)
語法格式如下:
剛才通過模塊導(dǎo)入函數(shù)你應(yīng)該發(fā)現(xiàn)一個(gè)潛在的問題,就是函數(shù)名稱太長怎么辦,除了名稱太長,還存在一種情況,模塊中的函數(shù)名稱與當(dāng)前文件中函數(shù)的名稱,存在重名的風(fēng)險(xiǎn)。此時(shí)可以學(xué)習(xí)一個(gè)新的內(nèi)容,通過 as 給模塊導(dǎo)入進(jìn)來的函數(shù)起個(gè)別名,然后在該文件都使用別名進(jìn)行編碼。
語法格式如下:
上述內(nèi)容應(yīng)用到案例中如下述代碼:
as 別名也可直接作用于模塊,語法格式如下:
隨著程序設(shè)計(jì)變的越來越復(fù)雜,只把函數(shù)放到模塊中已經(jīng)不能滿足要求了,需要將更高級的內(nèi)容放到模塊中,也就是類。
首先在 dog_module.py 文件中定義一個(gè)類。
此時(shí)的 dog_module 就是模塊的名稱,而在該模塊中只有一個(gè)類 Dog ,也可以在該模塊中多創(chuàng)建幾個(gè)類,例如:
與導(dǎo)入模塊的函數(shù)部分知識一樣,如果希望導(dǎo)入一個(gè)模塊中的類,可以直接通過下述語法格式實(shí)現(xiàn):
使用模塊中的類,語法格式如下:
具體代碼不在演示,自行完成吧。
導(dǎo)入模塊的類和導(dǎo)入模塊的的函數(shù)用法是一致的。
新建一個(gè) demo.py 文件,在該文件導(dǎo)入 dog_module 模塊中的類。
從模塊中導(dǎo)入多個(gè)類
該方式與函數(shù)的導(dǎo)入也一致,語法格式如下:
導(dǎo)入模塊中所有類
學(xué)到這里,你應(yīng)該已經(jīng)發(fā)現(xiàn)導(dǎo)入模塊中的函數(shù)與導(dǎo)入模塊中的類,從代碼編寫的角度幾乎看不出區(qū)別,對比著學(xué)習(xí)即可。
導(dǎo)入類的時(shí)候也可以應(yīng)用別名,同樣使用 as 語法。
學(xué)習(xí)到這里你對模塊是什么,模塊怎么用已經(jīng)有了一個(gè)基本認(rèn)知,接下來先不用自己寫一個(gè)特別牛的模塊,我們先把一些常見的模塊應(yīng)用起來。
通過隨機(jī)數(shù)模塊可以獲取到一個(gè)數(shù)字,它的使用場景非常廣,例如 游戲 相關(guān)開發(fā)、驗(yàn)證碼相關(guān)、抽獎(jiǎng)相關(guān),學(xué)習(xí)了隨機(jī)數(shù)之后可以完成一些非常不錯(cuò)的小案例。
randint 方法
導(dǎo)入隨機(jī)數(shù)模塊之后,可以通過 randint 方法隨機(jī)生成一個(gè)整數(shù),例如下述代碼:
反復(fù)運(yùn)行代碼會(huì)得到一個(gè) 1~10 之間的數(shù)字,由此可以 randint 方法中的參數(shù)含義。
choice 方法
通過 choice 方法可以配合列表實(shí)現(xiàn)一些效果,choice 可以隨機(jī)返回列表中的一個(gè)元素。
如果你想知道 choice 方法的具體用法,還記得怎么查詢嗎?
shuffle 方法
該方法可以將一個(gè)列表的順序打亂。
簡單挑選了 random 模塊中的三個(gè)方法做為說明,對于模塊的學(xué)習(xí),后面將為每個(gè)模塊單開一篇文章書寫。
時(shí)間模塊是 Python 中非常重要的一個(gè)內(nèi)置模塊,很多場景都離不開它,內(nèi)置模塊就是 Python 安裝好之后自帶的模塊。
time 方法
time 模塊主要用于操作時(shí)間,該方法中存在一個(gè) time 對象,使用 time 方法之后,可以獲取從 1970年1月1日 00:00:00 到現(xiàn)在的秒數(shù),很多地方會(huì)稱作時(shí)間戳。
輸出內(nèi)容:
sleep 方法
該方法可以讓程序暫停,該方法的參數(shù)是的單位是 秒 。
使用語法格式為:
asctime 與 localtime 方法
以上兩個(gè)方法都可以返回當(dāng)前系統(tǒng)時(shí)間,只是展示的形式不同。
time 模塊涉及的方法先只涉及這么多,后續(xù)滾雪球?qū)W習(xí)過程中在繼續(xù)補(bǔ)充。
Python 還內(nèi)置了很多模塊,例如 sys 模塊、os 模塊、json 模塊、pickle 模塊、shelve 模塊、xml 模塊、re 模塊、logging 模塊等等內(nèi)容,后續(xù)都將逐步學(xué)習(xí)到,有可能需要分開專題給大家講解。
Python 模塊,快速編碼的一種途徑,很多時(shí)候第三方模塊可以幫你解決大多數(shù)常見編碼場景,讓你在編碼的道路上飛奔。
它是內(nèi)置函數(shù)。build-in,應(yīng)該是C語言的。用的應(yīng)該是 c的library
在python2.73.源碼中
有這樣一句。pymath.h:extern double round(double);
在pymath.c中定義如下:
#ifndef HAVE_ROUND
double
round(double x)
{
double absx, y;
absx = fabs(x);
y = floor(absx);
if (absx - y = 0.5)
y += 1.0;
return copysign(y, x);
}
按Windows+R鍵,在運(yùn)行里輸入notepad,然后將后綴名為.py的python源文件拖進(jìn)notepad(詞本)程序里就可以看到了。
如果要好一點(diǎn)的效果,就去下一個(gè) notepad++ ,這個(gè)軟件查看各種代碼效果都很好
也可以下一個(gè)Uedit
如果想運(yùn)行python腳本,就去下一個(gè)python安裝
python自帶一個(gè)IDE,可以查看、編輯與調(diào)試python代碼,安裝python之后可以右擊后綴為.py的文件,選擇Edit with IDLE,這樣即可以查看,也可以調(diào)試代碼
pip?install?ipython
ipython
一般來說這樣就能看到源代碼了,不過numpy好像比較特殊,可以參考如下方法:
安裝pipenv,
用pipenv打開numpy源碼
$?pipenv?--three
$?python3.6?-c?"from?pathlib?import?Path;fn='Pipfile';Path(fn).write_text(Path(fn).read_text().replace('pypi.org',?'mirrors.aliyun.com/pypi'))"
$?pipenv?shell
$?pipenv?install?numpy
$?pipenv?open?numpy