語法 :: 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()

results matching ""

    No results matching ""