語法 :: import 陳述句
範例專案結構
project/
top_pkg/
|_sub_pkg1/
|_util.py # 定義一個 ff() 函式
|_base.py # 定義一個 f() 函式
|_sub_pkg2/
|_base.py # 定義一個 f() 函式
|_main.py
引用同專案同套件模組 (Intra-package References)
例如從 top_pkg/sub_pkg2/main.py 引用 top_pkg/sub_pkg2/base.py
建議使用 absolute import
from top_pkg.sub_pkg2 import base
base.f()
開發階段測試 , 切換工作目錄到 project/
python -m top_pkg.sub_pkg2.main
不建議這樣 import , 程式碼會變冗長
import top_pkg.sub_pkg2.base
top_pkg.sub_pkg2.base.f()
不建議直接 import 函式 , 閱讀程式碼會不容易判斷 f() 函式來自哪個模組
from top_pkg.sub_pkg2.base import f
f()
建議可使用 explicit relative import
from . import base
base.f()
不建議使用 implicit relative import , 閱讀程式碼時會不容易判斷模組隸屬哪個套件
import base
base.f()
引用同專案跨套件模組 (Inter-package References)
例如從 top_pkg/sub_pkg2/main.py 引用 top_pkg/sub_pkg1/base.py
建議使用 absolute import
from top_pkg.sub_pkg1 import base
不建議使用 explicit relative import
from ..sub_pkg1 import base
無法使用 implicit relative import
一次引用整個套件內的所有模組
建議使用 from top_pkg import sub_pkg1
# top_pkg/sub_pkg1/__init__.py
from . import util
from . import base
# top_pkg/sub_pkg2/main.py
from top_pkg import sub_pkg1
sub_pkg1.base.f()
sub_pkg1.util.ff()
不建議使用 from top_pkg/sub_pkg1 import *
# top_pkg/sub_pkg1/__init__.py
__all__ = ["util", "base"]
# top_pkg/sub_pkg2/main.py
from top_pkg/sub_pkg1 import *
base.f()
util.ff()