麻豆黑色丝袜jk制服福利网站-麻豆精品传媒视频观看-麻豆精品传媒一二三区在线视频-麻豆精选传媒4区2021-在线视频99-在线视频a

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > Python模塊的查找順序

Python模塊的查找順序

來源:千鋒教育
發布人:xqq
時間: 2023-11-07 11:35:09 1699328109

在上幾篇文章中已經用了如os,shutils,json等多個模塊,這些模塊都是python的內置模塊。相比之下,我們剛才使用的calc模塊就是自定義模塊。

假設我們使用importcalc導入calc模塊,python在啟動時按照什么樣的順序來查找這個模塊呢?

先查找內置(built-in)模塊中有沒有,如果沒有轉到2

查找sys.path變量指定的路徑下有沒有,有的話就使用,沒有就報錯

sys.path變量中存儲了那些路徑呢?

當前運行的python腳本所在的目錄

環境變量PYTHONPATH中的路徑,它和shell環境變量PATH差不多

這個變量可以使用python腳本在運行時修改它

默認的python安裝包的路徑

想要看下你的電腦當前sys.path有哪些路徑嗎?運行下面代碼就可以

importsys

print(sys.path)

查找模塊的順序是從前向后,只要查到就使用,因此這個變量存儲路徑的順序很重要。

模塊中包含執行語句的情況

如果引入的模塊中包含一些執行語句,那么在導入模塊時這些語句就會執行。但是即使同樣的模塊被導入了兩次,這些語句也只能執行一次。

來看下面的例子,定義calc模塊

print('Iamclacmodule')

defplus(a,b):

returna+b

defsubtract(a,b):

returna-b

并且在main.py中定義導入兩次calc模塊的函數

fromcalcimportplus

fromcalcimportsubtract

print(plus(1,2))

print(subtract(1,2))

結果是'Iamclacmodule'只會被打印一次。

用dir()函數來窺探模塊

dir()函數是python的內置函數,可用來獲取模塊的屬性,方法等信息,當我們剛接觸一個模塊,不清楚它由哪些有用的屬性和方法時,就可以用dir()來一探究竟。

以常用的json模塊為例,我們來展示下它的屬性和方法

importjson

print(dir(json))

#['JSONDecodeError','JSONDecoder','JSONEncoder','__all__','__author__','__builtins__','__cached__','__doc__','__file__','__loader__','__name__','__package__','__path__','__spec__','__version__','_default_decoder','_default_encoder','codecs','decoder','detect_encoding','dump','dumps','encoder','load','loads','scanner']

其中以雙下劃線開頭的變量,如__name__并非是模塊自己定義的,而是與模塊相關的默認屬性。

如果我想查看當前模塊內的所有屬性和方法呢?去掉dir()函數的參數就可以。拿上節的代碼為例來看下。

fromcalcimportplus

fromcalcimportsubtract

print(plus(1,2))

print(subtract(1,2))

print(dir())

#['__annotations__','__builtins__','__cached__','__doc__','__file__','__loader__','__name__','__package__','__spec__','plus','subtract']

我們會看到calc模塊的plus和substract方法也展示了出來,那么dir函數究竟是從哪里獲取的數據,背后的機理是什么呢?

其實每個模塊內部都有一個子集的私有符號表,它就是模塊內所有函數和方法共享的全局符號表。當模塊B導入模塊A時,就會把要導入的模塊A或者特定的方法,屬性放置到模塊B的全局符號表中,dir()函數也就是從模塊中的全局符號表中獲取出的值。

以上內容為大家介紹了Python模塊的查找順序,希望對大家有所幫助,如果想要了解更多Python相關知識,請關注IT培訓機構:千鋒教育。http://www.dietsnews.net/


tags: python培訓
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
主站蜘蛛池模板: a级毛片高清免费视频就| 自拍偷拍国语对白| 三男三女换着曰| 好爽好黄的视频| 久久婷婷国产综合精品| 国产gay小鲜肉| 黑人巨茎大战俄罗斯美女| 午夜剧场免费体验| 美女让男人桶出水的网站| 四虎影视永久在线精品免费| 蜜中蜜3在线观看视频| 卡一卡二卡三精品| 55夜色66夜色国产精品视频| **实干一级毛片aa免费| 成人永久免费高清| 日韩三级精品| 波多野结衣免费在线观看| 99在线精品免费视频| 好好的日视频| 杨幂精品国产福利在线| 厨房切底征服岳| 特级毛片在线观看| 亚洲欧美日韩综合久久久久| 小帅男同志chinesecouple| 波多野结衣中文字幕电影| 蜜桃97爱成人| 国产综合久久久久| 韩国免费一级片| 男人天堂网www| 老公和他朋友一块上我可以吗| 里番库全彩本子彩色h琉璃| 女人张开腿给男人桶爽免费| 波多野结衣一区二区三区88| 老子影院午夜伦手机电影| 男彩虹用的app小蓝| 亚洲日韩中文字幕在线播放| 亚洲精品美女在线观看| 337p人体韩国极品| 波多野结衣一区在线| 中文字幕在线高清| 无人区免费高清在线观看|