在 Python 中,神秘的命令「import *」授予對模組資源前所未有的存取權限。它不僅導入指定的模組,還導入位於包含資料夾中的珍貴的 __init__.py 檔案。結果,受祝福的 __init__.py 模組成為目前命名空間不可或缺的一部分。
借助 import 的功能,需要明確聲明「from project.model import __init__" 消失了。一個簡單的「from project.model import 」足以包含project.model模組及其神聖的__init__.py檔案中的所有內容。
import * 的魅力在於它能夠將所有命名對象(除了以下劃線開頭的對象)從指定模組導入到當前命名空間中。 這允許輕鬆存取任何導入的對象,而無需在其名稱前加上模組標識符的前綴。
例如,考慮以下程式碼片段:
這個神奇的咒語允許我們在沒有任何事先認識的情況下無縫地運用圓周率的力量:
然而,龐大的力量進口*是有代價的。它帶來了命名空間衝突的危險,可能會覆蓋目前範圍內的現有變數。此外,如果目標模組包含過多的對象,則可能會效率低。最後,也許也是最重要的,它扼殺了程式碼的自記錄性質,使變數、方法和類別的起源籠罩在神秘之中。
因此,明智的人我們保留 import * 用於臨時測試,並更喜歡使用更明確的生產代碼替代方案。一個謹慎的選擇是僅明確導入所需的物件:
或者,在不同的命名空間下導入整個模組可能是一種明智的妥協:
要揭開import * 的神秘面紗,必須了解其運作原理。預設情況下,它會匯入所有命名物件(不包括以下劃線開頭的物件)。但是,如果指定模組定義 all 變量,則會給出優先權,並且僅導入該變數中枚舉的名稱。
許多標準 Python 函式庫都組織成子模組,例如 urllib.request,這是 urllib 模組的普遍擴充。需要注意的是 import * from urllib 不會遍歷這些神聖的殿堂;需要單獨的導入語句才能存取它們:
不起眼的 import * 命令擁有巨大的力量,提供將整個模組的內容導入到當前命名空間的能力。然而,這種權力必須謹慎使用,以免命名空間衝突、效率低下和缺乏自我文件的危險讓我們陷入困境。對於生產代碼,更明確和結構化的導入實踐是通往平靜和清晰的道路。
以上是為什麼要避免在 Python 中使用「import *」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!