Python 模組匯入機制是模組化程式設計的基石。本文詳細比較 import 與 from ... import 的行為差異、命名空間影響與最佳實務建議。
import sys
print(sys.argv) # 需透過模組名稱存取
print(sys.path)
from sys import argv, path
print(argv) # 直接使用成員名稱
print(path)
from sys import *
print(path) # 匯入模組所有公開成員(__all__ 定義者)
| 維度 | import module | from module import name |
|---|---|---|
| 命名空間污染 | 低 | 中 |
| 名稱衝突風險 | 極低 | 存在 |
| 程式碼可讀性 | 高(來源明確) | 中(需查看匯入區) |
| 輸入字數 | 較多 | 較少 |
| 適用場景 | 大多數情況、標準庫 | 頻繁使用特定成員、別名化解衝突 |
# 模組別名
import numpy as np
import pandas as pd
# 成員別名(解決衝突)
from xml.etree import ElementTree as ET
from lxml import etree as LXML_ETREE
# 條件匯入(相容不同版本)
try:
import json
except ImportError:
import simplejson as json
import module,特別是標準庫與第三方套件。from module import name,但建議在檔案頂部集中管理。from module import *。import module as alias 縮寫長模組名(如 numpy → np)。匯入時 Python 依序搜尋:
PYTHONPATH 環境變數路徑.pth 檔案指定路徑可執行 python -c "import sys; print('\n'.join(sys.path))" 查看實際路徑。