導(dǎo)入包操作和本質(zhì)
常見方式如下:
import a.aa.module_AA
: 按模塊路徑導(dǎo)入在使用時,必須加完整名稱來引用. 比如:a.aa.module_AA.fun_AA()
from a.aa import module_AA
: 按包路徑導(dǎo)入模塊在使用時,直接可以使用模塊名. 比如:module_AA.fun_AA()
from a.aa.module_AA import fun_AA
按照模塊路徑導(dǎo)入指定類or方法在使用時,直接可以使用函數(shù)名。比如:fun_AA()
注意事項(xiàng):
from package import item
這種語法中, item 可以是包、模塊,也可以是函數(shù)、類、變量(對照方式23)import item1.item2
這種語法中, item 必須是包或模塊,不能是其他(對照方式1)
實(shí)操代碼
# 方式一: 按模塊路徑導(dǎo)入
import com.time.pause.capture2.module.a.aa.module_AA
print(com.time.pause.capture2.module.a.aa.module_AA.add(10, 20))
# 方式二: 按包路徑導(dǎo)入模塊
from com.time.pause.capture2.module.a.aa import module_AA
print(module_AA.add(10, 20))
# 方式三: 按照模塊路徑導(dǎo)入指定類or方法
from com.time.pause.capture2.module.a.aa.module_AA import add
add(10, 20)
import com.time.pause.capture2.module.a
導(dǎo)入包的本質(zhì)
其實(shí)是“導(dǎo)入了包的
__init__.py
”文件. 也就是說import pack1
意味著執(zhí)行了包 pack1 下面的__init__.py
文件. 這樣可以在__init__.py
中批量導(dǎo)入我們需要的模塊,而不再需要一個個導(dǎo)入.
實(shí)操代碼: 測試包的 __init__.py
文件本質(zhì)用法a 包下的 __init__.py
文件添加如下內(nèi)容:
import turtle
import math
print("導(dǎo)入a包")
b 包下的 module_B1.py
文件中導(dǎo)入 a 包,添加代碼如下:
import com.time.pause.capture2.module.a
print(com.time.pause.capture2.module.a.math.pi)
# 如上測試我們可以看出python的設(shè)計(jì)者非常巧妙的通過__init__.py 文件將包轉(zhuǎn)成了模塊的操作
用 * 導(dǎo)入包
import *
這樣的語句理論上是希望文件系統(tǒng)找出包中所有的子模塊,然后導(dǎo)入它們. 盡管提供 import * 的方法,仍不建議在生產(chǎn)代碼中使用這種寫法 Python 解決方案是提供一個明確的包索引. 這個索引由 init .py 定義 all 變量,該變量為一個列表, 如上例 a包下的__init__.py
中,可定義__all__ = ["module_A","module_A2"]
-
模塊
+關(guān)注
關(guān)注
7文章
2728瀏覽量
47615 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4344瀏覽量
62812 -
代碼
+關(guān)注
關(guān)注
30文章
4809瀏覽量
68825 -
python
+關(guān)注
關(guān)注
56文章
4801瀏覽量
84882
發(fā)布評論請先 登錄
相關(guān)推薦
評論