最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python模塊的加載講解

 更新時間:2019年01月15日 09:36:52   作者:hiekay  
今天小編就為大家分享一篇關(guān)于Python模塊的加載講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

不管是用import還是用from mmmm import *的方式導(dǎo)入模塊,當(dāng)程序運行之后,回頭在看那個存儲著mmmm.py文件的目錄中,多了一個文件:

$ ls mmm*
mmmm.py mmmm.pyc

在這個目錄下面,除了原來的那個mmmm.py之外,又多了一個mmmm.pyc文件,這個文件不是我寫的,需要用import的過程說起。

import的工作流程

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

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

搜索模塊

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

  1. 程序的主目錄。上一講中,在codes這個目錄中運行交互模式,這時候的主目錄就是codes,當(dāng)在那個交互模式中運行import mmmm的時候,就首先在codes這個目錄中搜索相應(yīng)的文件(找到.py之后編譯成為.pyc)。當(dāng)然,后面在網(wǎng)頁編程中,所謂主目錄是可以通過頂層文件設(shè)置的目錄。
  2. PYTHONPATH目錄。這是一個環(huán)境變量設(shè)置,如果沒有設(shè)置則濾去。如何進(jìn)行環(huán)境變量設(shè)置,請google啦。
  3. 標(biāo)準(zhǔn)庫目錄。已經(jīng)隨著Python的安裝進(jìn)入到計算機(jī)中的那個。
  4. 任何.pth文件的內(nèi)容。如果有這類文件,最后要在這類文件中搜索一下。這是一個簡單的方法,在.pth文件中,加入有效目錄,使之成為搜索路徑。下圖就是我的計算機(jī)上,存放.pth文件的位置以及里面放著的.pth文件

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

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

重載模塊

以mmmm模塊為例。

在一個shell里面,運行了python,并且做了如下操作:

>>> import mmmm
>>> mmmm.web
'https://hiekay.github.io'

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

#!/usr/bin/env python
#coding:utf-8
web = "https://hiekay.github.io, I am writing a python book on line. "
def my_name(name):
  print name
class pythoner:
  def __init__(self,lang):
    self.lang = lang
  def programmer(self):
    print "python programmer language is: ",self.lang

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

>>> mmmm.web
'https://hiekay.github.io'

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

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

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

>>> reload(mmmm)
<module 'mmmm' from 'mmmm.py'>
>>> mmmm.web
'https://hiekay.github.io, I am writing a python book on line. '

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

特別提醒注意:

  • reload是內(nèi)置函數(shù)
  • reload(module),module是一個已經(jīng)存在的模塊,不是變量名。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接

相關(guān)文章

  • Python搭建HTTP服務(wù)過程圖解

    Python搭建HTTP服務(wù)過程圖解

    這篇文章主要介紹了Python搭建HTTP服務(wù)過程圖解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-12-12
  • python 列表遞歸求和、計數(shù)、求最大元素的實例

    python 列表遞歸求和、計數(shù)、求最大元素的實例

    今天小編就為大家分享一篇python 列表遞歸求和、計數(shù)、求最大元素的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • Python如何實現(xiàn)PDF隱私信息檢測

    Python如何實現(xiàn)PDF隱私信息檢測

    隨著越來越多的個人信息以電子形式存儲和傳輸,確保這些信息的安全至關(guān)重要,本文將介紹如何使用Python檢測PDF文件中的隱私信息,需要的可以參考下
    2025-02-02
  • Python?庫?PySimpleGUI?制作自動化辦公小軟件的方法

    Python?庫?PySimpleGUI?制作自動化辦公小軟件的方法

    Python?在運維和辦公自動化中扮演著重要的角色,PySimpleGUI?是一款很棒的自動化輔助模塊,讓你更輕松的實現(xiàn)日常任務(wù)的自動化,下面通過本文給大家介紹下Python?庫?PySimpleGUI?制作自動化辦公小軟件的過程,一起看看吧
    2021-12-12
  • python基于opencv檢測程序運行效率

    python基于opencv檢測程序運行效率

    這篇文章主要介紹了python基于opencv檢測程序運行效率,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-12-12
  • Kears 使用:通過回調(diào)函數(shù)保存最佳準(zhǔn)確率下的模型操作

    Kears 使用:通過回調(diào)函數(shù)保存最佳準(zhǔn)確率下的模型操作

    這篇文章主要介紹了Kears 使用:通過回調(diào)函數(shù)保存最佳準(zhǔn)確率下的模型操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Python之列表的append()方法最容易踩的坑

    Python之列表的append()方法最容易踩的坑

    這篇文章主要介紹了Python之列表的append()方法最容易踩的坑及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • 淺析Python中的多重繼承

    淺析Python中的多重繼承

    這篇文章主要介紹了Python中的多重繼承,是Python學(xué)習(xí)中的基本知識,代碼基于Python2.x版本,需要的朋友可以參考下
    2015-04-04
  • Python Pandas找到缺失值的位置方法

    Python Pandas找到缺失值的位置方法

    下面小編就為大家分享一篇Python Pandas找到缺失值的位置方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • Python實現(xiàn)將藍(lán)底照片轉(zhuǎn)化為白底照片功能完整實例

    Python實現(xiàn)將藍(lán)底照片轉(zhuǎn)化為白底照片功能完整實例

    這篇文章主要介紹了Python實現(xiàn)將藍(lán)底照片轉(zhuǎn)化為白底照片功能,結(jié)合完整實例形式分析了Python基于cv2庫進(jìn)行圖形轉(zhuǎn)換操作的相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2019-12-12

最新評論

濮阳市| 枣庄市| 卓尼县| 乐山市| 胶南市| 枣庄市| 金川县| 承德县| 峨山| 桂平市| 巴中市| 霍林郭勒市| 新巴尔虎右旗| 获嘉县| 荣昌县| 永顺县| 东丰县| 原阳县| 云林县| 广昌县| 东莞市| 上饶县| 永济市| 兰西县| 红桥区| 巴塘县| 盐边县| 杨浦区| 永济市| 青铜峡市| 上栗县| 湖北省| 乐山市| 广灵县| 哈巴河县| 巴林左旗| 丰顺县| 巴林右旗| 陆良县| 依安县| 金门县|