国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

[零基礎(chǔ)學(xué)python]模塊的加載

tinylcy / 2305人閱讀

摘要:找到模塊文件之后,將其編譯成字節(jié)碼,就是那個(gè)文件里面的關(guān)于字節(jié)碼,下面會(huì)介紹,請繼續(xù)閱讀。當(dāng)然,如果根本就沒有找到同名的源文件,只有字節(jié)碼文件,那么就只能運(yùn)行這個(gè)了。執(zhí)行就是前面已經(jīng)編譯的模塊字節(jié)碼文件,順理成章要執(zhí)行了。

不管是用import還是用from mmmm import *的方式導(dǎo)入模塊,當(dāng)程序運(yùn)行之后,回頭在看那個(gè)存儲(chǔ)著mmmm.py文件的目錄中(關(guān)于mmmm.py文件可以看上一講),多了一個(gè)文件:

qw@qw-Latitude-E4300:~/Documents/ITArticles/BasicPython/codes$ ls mmm*
mmmm.py  mmmm.pyc

在這個(gè)目錄下面,除了原來的那個(gè)mmmm.py之外,又多了一個(gè)mmmm.pyc文件,這個(gè)文件不是我寫的,是哪里來的呢?

要破開此迷,需要用import的過程說起。

import的工作流程

import mmmm,并不是僅僅將mmmm.py這個(gè)文件裝載到當(dāng)前位置(文件內(nèi)),其實(shí)是首先進(jìn)行了一次運(yùn)算。當(dāng)mmmm.py被第一次導(dǎo)入的時(shí)候,python首先要對其進(jìn)行編譯,生成擴(kuò)展名為.pyc的同名文件,然后才執(zhí)行mmmm模塊的代碼,創(chuàng)建相應(yīng)的對象等。就如同把大象裝進(jìn)冰箱,有三步要執(zhí)行:

搜索。就是python要能夠找到import的模塊。怎么找到,后面講述。

編譯。找到模塊文件之后,將其編譯成字節(jié)碼,就是那個(gè).pyc文件里面的(關(guān)于字節(jié)碼,下面會(huì)介紹,請繼續(xù)閱讀)。注意,不是什么時(shí)候都編譯的,只有第一次運(yùn)行時(shí)候才編譯,如果mmmm.py文件改變了,相當(dāng)于又一個(gè)新文件,也會(huì)從新編譯。其實(shí)就是.pyc文件中有一個(gè)時(shí)間戳,python會(huì)自動(dòng)檢查這個(gè)時(shí)間戳,如果它比同名的.py文件時(shí)間戳舊,就會(huì)從新編譯。否則跳過。當(dāng)然,如果根本就沒有找到同名的.py源文件,只有字節(jié)碼文件.pyc,那么就只能運(yùn)行這個(gè)了。

運(yùn)行。這就沒什么好說的了,生米已經(jīng)淘干凈了,并且放到鍋里,開始加熱了,最后就只能熟飯了。執(zhí)行就是前面已經(jīng)編譯的模塊字節(jié)碼文件,順理成章要執(zhí)行了。

搜索模塊

一般情況下,python會(huì)自動(dòng)的完成模塊搜索過程。但是,在某些情況下,或許會(huì)要求程序員來設(shè)定搜索路徑。當(dāng)import一個(gè)模塊后,python會(huì)按照下面的順序來找那個(gè)將要導(dǎo)入的模塊文件

程序的主目錄。上一講中,在codes這個(gè)目錄中運(yùn)行交互模式,這時(shí)候的主目錄就是codes,當(dāng)在那個(gè)交互模式中運(yùn)行import mmmm的時(shí)候,就首先在codes這個(gè)目錄中搜索相應(yīng)的文件(找到.py之后編譯成為.pyc)。當(dāng)然,后面在網(wǎng)頁編程中,看官會(huì)看到,所謂主目錄是可以通過頂層文件設(shè)置的目錄。

PYTHONPATH目錄。這是一個(gè)環(huán)境變量設(shè)置,如果沒有設(shè)置則濾去。如何進(jìn)行環(huán)境變量設(shè)置,請看官google啦。

標(biāo)準(zhǔn)庫目錄。已經(jīng)隨著Python的安裝進(jìn)入到計(jì)算機(jī)中的那個(gè)。

任何.pth文件的內(nèi)容。如果有這類文件,最后要在這類文件中搜索一下。這是一個(gè)簡單的方法,在.pth文件中,加入有效目錄,使之成為搜索路徑。下圖就是我的計(jì)算機(jī)上,存放.pth文件的位置以及里面放著的.pth文件

看官也可以自己編寫.pth文件,里面是有關(guān)搜索目錄,保存到這里。比如,打開目錄中的easy-install.pth文件,發(fā)現(xiàn)的內(nèi)容:

搜索就是這么一個(gè)過程。這里建議看官了解即可,不一定非要進(jìn)行什么設(shè)置,在很多情況下,python都是會(huì)自動(dòng)完成的。特別是初學(xué)者,暫且不要輕舉妄動(dòng)。

重載模塊

以mmmm模塊為例(在這里要特別提醒看官:我這樣命名是相當(dāng)不好滴,只不過是為了惡搞才這樣命名的)。

在一個(gè)shell里面,運(yùn)行了python,并且做了如下操作:

>>> import mmmm
>>> mmmm.web
"https://qiwsir.github.io"

下面我再打開一個(gè)shell,編輯mmmm.py這個(gè)文件,進(jìn)行適當(dāng)修改:

保存之后,切換到原來的那個(gè)導(dǎo)入了模塊的交互模式:

>>> mmmm.web
"https://qiwsir.github.io"

輸出的跟前面的一樣,沒有任何變化,這是為什么呢?

原來,當(dāng)導(dǎo)入模塊的時(shí)候,只會(huì)在第一次導(dǎo)入時(shí)加載和執(zhí)行模塊代碼,之后就不會(huì)重新加載或重新執(zhí)行了,如果模塊代碼修改了,但是這里執(zhí)行的還是修改之前的。

怎么實(shí)現(xiàn)代碼修改之后,執(zhí)行新的呢?一種方式就是退出原來的交互模式,再重新進(jìn)入,再import mmmm。呵呵,這種方法有點(diǎn)麻煩。Python提供了另外一個(gè)函數(shù)——reload函數(shù),能夠?qū)崿F(xiàn)模塊的重新加載(簡稱重載),重載后模塊代碼重新執(zhí)行。如下繼續(xù):

>>> reload(mmmm)

>>> mmmm.web
"https://qiwsir.github.io, I am writing a python book on line."

這下就顯示修改之后的內(nèi)容了。

特別提醒注意:

reload是內(nèi)置函數(shù)

reload(module),module是一個(gè)已經(jīng)存在的模塊,不是變量名。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/37409.html

相關(guān)文章

  • Python從入門到轉(zhuǎn)行

    摘要:學(xué)了大半年之后成功轉(zhuǎn)行做前端了。包含大量其他神經(jīng)網(wǎng)絡(luò)庫中的包裝器和抽象,其中最值得注意的是,其中也包含一些機(jī)器學(xué)習(xí)的實(shí)用模塊。它是輕量級可擴(kuò)展的神經(jīng)網(wǎng)絡(luò)工具包,同時(shí)擁有友好的界面,可供機(jī)器學(xué)習(xí)的訓(xùn)練和預(yù)測使用。 題記:大二的時(shí)候發(fā)現(xiàn)人生苦短,所以信了拍神,開始學(xué)Python。學(xué)了大半年之后成功轉(zhuǎn)行做前端了。來寫個(gè)教程幫助大家入門Python。 Python零基礎(chǔ)入門 零基礎(chǔ)入門就得從最...

    ingood 評論0 收藏0
  • [基礎(chǔ)學(xué)python]啰嗦除法

    摘要:補(bǔ)充一個(gè)資料,供有興趣的朋友閱讀浮點(diǎn)數(shù)算法爭議和限制說明以上除法規(guī)則,是針對,在中,將和等同起來了。比如下面的例子不啰嗦了,實(shí)驗(yàn)一個(gè)注意了,引用了一個(gè)模塊之后,再做除法,就不管什么情況,都是得到浮點(diǎn)數(shù)的結(jié)果了。 除法啰嗦的,不僅是python。 整數(shù)除以整數(shù) 看官請?jiān)趩?dòng)idle之后,練習(xí)下面的運(yùn)算: >>> 2/5 0 >>> 2.0/5 0.4 >>> 2/5.0 0.4 >...

    james 評論0 收藏0
  • [基礎(chǔ)學(xué)python]Import 模塊

    摘要:認(rèn)識(shí)模塊對于模塊,在前面的一些舉例中,已經(jīng)涉及到了,比如曾經(jīng)有過獲取隨機(jī)數(shù)模塊。這張圖列出了很少一部分存在這個(gè)目錄中的模塊文件。的標(biāo)準(zhǔn)庫是的一個(gè)組成部分,也是為的利器,可以讓編程事半功倍。這就是基本的模塊方法。 認(rèn)識(shí)模塊 對于模塊,在前面的一些舉例中,已經(jīng)涉及到了,比如曾經(jīng)有過:import random (獲取隨機(jī)數(shù)模塊)。為了能夠?qū)δK有一個(gè)清晰的了解,首先要看看什么模塊,這里選...

    yankeys 評論0 收藏0
  • [基礎(chǔ)學(xué)python]Hello,第一個(gè)網(wǎng)頁分析

    摘要:的非阻塞單線程的特點(diǎn)在這個(gè)模塊中體現(xiàn)。還有一個(gè)模塊引入,是用完成的這兩句就顯示了所謂命令行解析模塊的用途了。表示可以接收來自的請求了。以上把一個(gè)簡單的剖析。 As he walked by the sea of Galilee, he saw two brothers, Simon, who is called Peter, and Andrew his brother, cas...

    Steve_Wang_ 評論0 收藏0

發(fā)表評論

0條評論

tinylcy

|高級講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<