python學(xué)習(xí)筆記 - import語(yǔ)句

模塊的層次化命名

To help organize modules and provide a hierarchy in naming, Python has a concept of packages. A package can contain other packages and modules while modules cannot contain other modules or packages. From a file system perspective, packages are directories and modules are files.

import 語(yǔ)句

import的兩種形式

  1. 不帶from。例如:import datetime。注意:datetime是模塊,如果這樣寫(xiě):import datetime.date,就會(huì)報(bào)錯(cuò):ImportError: No module named date。
  2. 帶from。例如:from datetime import date

import語(yǔ)句的執(zhí)行

分兩步執(zhí)行:

  1. 查找一個(gè)模塊;如果需要的話(huà),就初始化它
  2. 在import語(yǔ)句發(fā)生的作用域的本地命名空間中定義一個(gè)或多個(gè)名稱(chēng)

第一種形式會(huì)為import語(yǔ)句(一次可以導(dǎo)入多個(gè)模塊)中要導(dǎo)入的每個(gè)模塊重復(fù)執(zhí)行這兩步。而第二種僅執(zhí)行第1步一次,因?yàn)橐淮沃荒軐?dǎo)入多個(gè)模塊;然后為該模塊下要導(dǎo)入的每一個(gè)組件重復(fù)執(zhí)行第二步。

第一種import語(yǔ)句會(huì)在本地命名空間中將模塊名綁定至模塊對(duì)象。如果使用了as關(guān)鍵字,那么緊跟在as后面的名稱(chēng)就被用作被導(dǎo)入模塊在當(dāng)前命名空間中的本地名稱(chēng)。而第二種帶有from的import語(yǔ)句不會(huì)綁定模塊名稱(chēng),它翻閱跟在import后面的標(biāo)示符列表,在第一步找到的模塊中查找每一個(gè)命名,并在本地命名空間中將這些名稱(chēng)綁定至導(dǎo)入到當(dāng)前命名空間中的對(duì)象。如果第二種形式使用*號(hào)代替了標(biāo)示符列表,那么在被導(dǎo)入模塊中定義的名稱(chēng)就會(huì)被綁定至import語(yǔ)句所在的本地命名空間。

在一個(gè)模塊中,如果定義了all變量,那么其值必須是一系列由該模塊定義的或?qū)氲拿Q(chēng)。在該變量中給定的名稱(chēng)必須是存在的,且是經(jīng)過(guò)慎重考慮要公開(kāi)的。如果未定義,那么公有的名稱(chēng)集則包含在模塊的命名空間中不以下劃線(xiàn)(_)開(kāi)頭的命名。換句話(huà)說(shuō)就是,以下劃線(xiàn)開(kāi)頭的命名就是私有的,非公開(kāi)的。
all應(yīng)當(dāng)包含整個(gè)公有的API,目的是為了避免意外地暴露并非API一部分的元素,例如,在模塊中被導(dǎo)入和使用的庫(kù)模塊。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容