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