溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python的py文件中有哪些細(xì)節(jié)

發(fā)布時(shí)間:2021-11-20 14:32:48 來(lái)源:億速云 閱讀:116 作者:iii 欄目:編程語(yǔ)言

本篇內(nèi)容介紹了“Python的py文件中有哪些細(xì)節(jié)”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

模塊是一種以.py為后綴的文件,我們可以在.py文件中編輯Python代碼,比如變量、函數(shù)、類(lèi)、邏輯等等,滿足某種特定的功能。

比如新建一個(gè)test_for_xxxx.py的文件,此時(shí)我們已經(jīng)創(chuàng)建了一個(gè)test_for_xxxx模塊,模塊的名稱是該.py腳本文件的名稱。

聲明代碼

在文件的頭部編寫(xiě)以下聲明代碼:

#!/usr/bin/python 或者 #!/usr/bin/env python
#coding:utf-8

#!/usr/bin/python指定 【/usr/bin/python】目錄下的Python解釋器執(zhí)行Python腳本。

#!/usr/bin/env python根據(jù)PATH環(huán)境變量中指定的第一個(gè)Python解釋器,執(zhí)行Python腳本。【推薦使用】

#coding:utf-8聲明該文件的編碼格式為 utf-8 。輸入該代碼就可以使py文件支持中文顯示。

程序入口

在文件中添加如下代碼:

if __name__ == "__main__"

if name == 'main’相當(dāng)于Python模擬的程序入口,Python本身并沒(méi)有這么規(guī)定,這只是一種編碼習(xí)慣。當(dāng).py文件被直接運(yùn)行時(shí),if name == 'main’下的代碼塊將被運(yùn)行;當(dāng).py文件以模塊形式被導(dǎo)入時(shí),if name == 'main’下的代碼塊不被運(yùn)行。

包的概念

包是在模塊之上的概念,為了方便管理而將文件進(jìn)行打包,本質(zhì)是一個(gè)目錄。比如當(dāng)兩個(gè)功能不同的模塊文件取了相同的名稱時(shí),無(wú)法區(qū)分導(dǎo)入的模塊是哪個(gè)模塊,就可以分別構(gòu)造一個(gè)包,將模塊放在包文件夾下,通過(guò)包.模塊名來(lái)引用模塊。通常一個(gè)包文件由__init__.py和其他諸多.py文件構(gòu)成。該__init__.py內(nèi)容可以為空,也可以寫(xiě)入一些包執(zhí)行時(shí)的初始化代碼。

包目錄下除了模塊文件為,也可以包含子目錄,假如子目錄中也有 init.py,那么它就是這個(gè)包的子包了。

常見(jiàn)的包結(jié)構(gòu):

package

├── init.py

├── module1.py

└── module2.py

有時(shí)候也會(huì)提到庫(kù)的概念。Python庫(kù)著重強(qiáng)調(diào)其功能性,可以視為具有相關(guān)功能模塊、包的集合,也就是說(shuō)具有某些功能的模塊和包都可以稱為庫(kù)。比如Python內(nèi)置了強(qiáng)大的標(biāo)準(zhǔn)庫(kù)、還有像NumPy、Pandas這些強(qiáng)大科學(xué)計(jì)算功能的第三方庫(kù)。

import的用法

接下來(lái)介紹下import的使用方法。模塊的導(dǎo)入可以使用以下方式:

import 模塊名稱 as 自定義名稱 # 可以避免沖突情況的發(fā)生
import 模塊名稱1
import 模塊名稱1,模塊名稱2

比如import test_for_xxxx中import本質(zhì)上是將test_for_xxxx.py里面的所有代碼解釋編譯之后賦值給了一個(gè)當(dāng)前模塊的同名變量test_for_xxxx。

當(dāng)我們想要訪問(wèn)test_for_xxxx.py里面的name屬性時(shí),需要寫(xiě)test_for_xxxx.name,如果想要調(diào)用里面的add()函數(shù)時(shí)需要寫(xiě)test_for_xxxx.add()。導(dǎo)入模塊后,模塊所在文件夾將自動(dòng)生成一個(gè)對(duì)應(yīng)的__pycache__\test_for_xxxx.cpython-36.pyc文件。

所有被加載到內(nèi)存的模塊都放在sys.modules中,所以執(zhí)行import時(shí)首先查詢列表中是否已添加模塊。如果已經(jīng)添加至sys.modules中,那只需要將module的name添加到正在調(diào)用該module的本地空間中。如果還沒(méi)有添加在sys.modules中,就需要在sys.path所有路徑的目錄中去按順序查找該模塊的文件,這些文件一般后綴為".py"、".pyo"、".pyc"、".pyd"、".dll",找到這些模塊后就可以將這些模塊添加到sys.modules中,再將module name導(dǎo)入到本地。

如果要導(dǎo)入模塊內(nèi)特定函數(shù)或者方法時(shí),則可以使用from…import…,如下所示:

from 模塊名稱import 函數(shù)名稱1, 函數(shù)名稱2, 函數(shù)名稱3 
from module_name import * # 導(dǎo)入所有方法, 不建議使用,以避免沖突情況的發(fā)生

from…import…中import的本質(zhì)就是將test_for_xxxx.py里面的name屬性和add()函數(shù)代碼解釋編譯之后賦值給了一個(gè)叫做name和add的變量中,如果調(diào)用add()函數(shù)直接調(diào)用即可。

另外,導(dǎo)入模塊和導(dǎo)入包直接的區(qū)別是導(dǎo)入包只是執(zhí)行了包下面的__init__.py文件而已。

“Python的py文件中有哪些細(xì)節(jié)”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI