首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 更多程式設計知識

Python import 與 from...import 差異深度解析

     編輯:更多程式設計知識

Python 模組匯入機制是模組化程式設計的基石。本文詳細比較 import 與 from ... import 的行為差異、命名空間影響與最佳實務建議。

基本語法與行為對比

1. import module


import sys

print(sys.argv)        # 需透過模組名稱存取
print(sys.path)
  • 將整個模組物件載入命名空間,以模組名稱作為前綴存取成員。
  • 命名空間乾淨,不易發生名稱衝突。
  • 程式碼可讀性高,明確知道成員來源。

2. from module import name


from sys import argv, path

print(argv)            # 直接使用成員名稱
print(path)
  • 將指定成員直接注入當前命名空間。
  • 無需前綴,寫法簡潔。
  • 風險:若多模組有同名成員,後匯入者會覆蓋先前者。

3. from module import *


from sys import *

print(path)            # 匯入模組所有公開成員(__all__ 定義者)
  • 強烈不建議使用:污染命名空間,難以追蹤成員來源,IDE 自動完成功能失效。
  • 僅適合互動式環境快速測試。

實務比較表

維度import modulefrom 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

最佳實務建議

  1. 預設使用 import module,特別是標準庫與第三方套件。
  2. 頻繁使用的成員可用 from module import name,但建議在檔案頂部集中管理。
  3. 避免 from module import *。
  4. 使用 import module as alias 縮寫長模組名(如 numpy → np)。
  5. 循環匯入問題時,改用函式內部匯入或重構架構。

模組搜尋路徑 (sys.path)

匯入時 Python 依序搜尋:

  1. 當前腳本目錄
  2. PYTHONPATH 環境變數路徑
  3. 標準庫安裝路徑
  4. .pth 檔案指定路徑

可執行 python -c "import sys; print('\n'.join(sys.path))" 查看實際路徑。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved