為了提高模塊加載的速度,每個(gè)模塊都會(huì)在__pycache__文件夾中放置該模塊的預(yù)編譯模塊,命名為module.version.pyc,version是模塊的預(yù)編譯版本編碼,一般都包含Python的版本號(hào)。例如在CPython 發(fā)行版3.4中,fibo.py文件的預(yù)編譯文件就是:__pycache__/fibo.cpython-34.pyc。這種命名規(guī)則可以保證不同版本的模塊和不同版本的python編譯器的預(yù)編譯模塊可以共存。以下是小編為你整理的初學(xué)者怎么學(xué)習(xí)python ?
腳本在運(yùn)行之前會(huì)首先檢查python文件的*編輯日期和預(yù)編譯模塊的編譯時(shí)間,從而決定是否需要重新編譯。預(yù)編譯模塊也是跨平臺(tái)的,所以不同的模塊是可以在不同的系統(tǒng)和不同的架構(gòu)之間共享的。 ?
Python在兩種情況下不檢查緩存。*種,從命令行中直接加載的模塊總是會(huì)重新編譯并且結(jié)果不保存。第二種,如果沒(méi)有源模塊,則不會(huì)檢查緩存。為了支持無(wú)源代碼的部署方式,應(yīng)該將預(yù)編譯模塊放在源代碼文件夾中而不是__pycache__中,并且不要包含源代碼模塊。
?
你可以使用-O和-OO參數(shù)來(lái)降低預(yù)編譯模塊的大小。-O開(kāi)關(guān)會(huì)去除assert語(yǔ)句,-OO開(kāi)關(guān)會(huì)去除assert語(yǔ)句和__doc__字符串。因?yàn)橛行┠K要依賴(lài)這些語(yǔ)句,因此只有當(dāng)你確認(rèn)模塊的內(nèi)容時(shí)才去使用這些開(kāi)關(guān)。優(yōu)化模塊的后綴名是.pyo。 ?
.pyo和.pyc文件的執(zhí)行速度不會(huì)比.py文件快,快的地方在于模塊加載的速度。compileall模塊可以用來(lái)把某個(gè)文件夾的中的所有文件都編譯成為.pyc或者.pyo文件。 ?
lambdalambda通常是匿名函數(shù)的代名詞,我們用到lambda的時(shí)候就是創(chuàng)建一個(gè)匿名函數(shù):舉個(gè)簡(jiǎn)單的例子:x代表了輸入,x**2代表計(jì)算方法,也代表返回內(nèi)容,也就是說(shuō)這個(gè)函數(shù)輸入一個(gè)數(shù),返回這個(gè)數(shù)的平方。但是因?yàn)檫@個(gè)函數(shù)沒(méi)有函數(shù)名,所以無(wú)法在其他地方調(diào)用 ?
除非我們將這個(gè)函數(shù)起一個(gè)名字:但通常我們不會(huì)這么做,匿名函數(shù)只是作為匿名使用。 ?
filter函數(shù)用法是:filter(fuction,list):將list中每一個(gè)元素帶入到function中,計(jì)算返回值,將返回值為T(mén)rue的list中的元素形成一個(gè)新的list,當(dāng)然也可以是tuple。 ?
對(duì)于上面這個(gè)函數(shù),我們可以用lambda來(lái)簡(jiǎn)化:它的意思是,如果alist中的值的平方小于5,就返回這個(gè)值,形成一個(gè)新的list ?
關(guān)于python
Python(英國(guó)發(fā)音:/?pa?θ?n/ 美國(guó)發(fā)音:/?pa?θɑ?n/), 是一種面向?qū)ο蟮慕忉屝陀?jì)算機(jī)程序設(shè)計(jì)語(yǔ)言,由荷蘭人Guido van Rossum于1989年發(fā)明,*個(gè)公開(kāi)發(fā)行版發(fā)行于1991年。Python是純粹的自由軟件,源代碼和解釋器CPython遵循GPL(GNU General Public License)協(xié)議[1] 。Python語(yǔ)法簡(jiǎn)潔清晰,特色之一是強(qiáng)制用空白符(w作為語(yǔ)句縮進(jìn)。 ?
首先從Python官網(wǎng)(https://www.python.org/downloads/)下載Python安裝程序,本文以Python 3.5.2為例:
?
web-based installer 需要通過(guò)聯(lián)網(wǎng)完成安裝2、executable installer 通過(guò)可執(zhí)行文件(*.exe)方式安裝3、embeddable zip file 嵌入式版本,可以集成到其它應(yīng)用中 ?
筆者開(kāi)發(fā)環(huán)境是Windows所以選擇紅框選中的版本,Mac用戶(hù)下載紅框標(biāo)注的版本,下載完成后,找到相應(yīng)的軟件包, ?
?
條件判斷語(yǔ)句
條件判斷:簡(jiǎn)單說(shuō)就是滿(mǎn)足條件就執(zhí)行,不滿(mǎn)則就不執(zhí)行.這就和我們生活一樣.舉個(gè)買(mǎi)水果地栗子,西瓜10塊一個(gè),蘋(píng)果5塊一個(gè),香蕉3塊一個(gè),假如你帶了3塊錢(qián),就能買(mǎi)個(gè)香蕉,帶了5塊錢(qián)就能買(mǎi)個(gè)蘋(píng)果 ?
簡(jiǎn)單一句話(huà):從上往下執(zhí)行,滿(mǎn)足就結(jié)束,不滿(mǎn)足就往下找 ?
循環(huán)是經(jīng)常會(huì)用到的,循環(huán)的出現(xiàn)主要就是高效,想想,如果想要獲取1到10之間的數(shù),我們不可能一個(gè)個(gè)去輸出這樣太浪費(fèi)計(jì)算機(jī)資源, 所有我們直接扔給計(jì)算機(jī)一個(gè)數(shù),他會(huì)自動(dòng)的檢索輸出 ?
range(10):就是生成一個(gè)數(shù)組,也就是說(shuō)只要是一個(gè)序列我們都可以去迭代函數(shù)(function) ?
函數(shù)的定義:def表示的就是函數(shù)為什么會(huì)有函數(shù)這樣的東西? ?
現(xiàn)在有一個(gè)項(xiàng)目?jī)蓚€(gè)人(A和B)在開(kāi)發(fā), A寫(xiě)了上面這樣的代碼, 然后突然有一天B在某個(gè)地方也要寫(xiě)這樣的代碼,如果B再去寫(xiě)一遍就有點(diǎn)浪費(fèi)的感覺(jué)了,所以就出現(xiàn)了函數(shù), ?
A定義了一個(gè)add()這樣的函數(shù),B想用直接用現(xiàn)成的就好了如果B想要求的不是1到10的和呢,那么又來(lái)了一種傳遞參數(shù) ?
自己想要求什么傳遞參數(shù)就可以,如果我傳遞的不是一個(gè)參數(shù)呢,我想傳遞10個(gè)參數(shù)怎么辦?這時(shí)候就是用可變參數(shù)(很高級(jí)的用法):*號(hào)就代表可變參數(shù)