[英]importing multiple functions from a Python module
我正在從一個模塊中導入很多功能
是不是更好用
from my_module import function1, function2, function3, function4, function5, function6, function7
這有點混亂,但避免了該模塊中的所有內容淹沒當前命名空間或
from my_module import *
它看起來很整潔,但會用該模塊中的所有內容填充命名空間。
在 PEP8 中找不到任何關於您應該按名稱導入多少限制的信息。 哪個更好?為什么?
如果您真的需要這么多功能,那么您已經污染了您的命名空間。
我會建議:
import my_module
或者,如果 my_module 的名稱很長,請使用別名:
import my_long_module as m
如果它介於兩者之間,請使用
from my_module import function1, function2, function3, function4, function5, function6, function7
請參閱“顯式優於隱式”。 在import this
。
如果您只想要一個比my_module.function1
更短的名稱,那么總是import my_module as mod
。
對於您多次使用的少數功能(多次鍵入,因此您想要一個短名稱或循環,因此訪問速度很重要),有
func1 = my_module.function1
通過一點點管理,您可以控制 import * 導入的內容。 假設您的 my_module 具有 function1..function8 但您只想使功能 1 到 6 可用。 在您的 my_module 中,重新分配__all__
屬性:
my_module.py :
__all__ = ['function1', 'function2', 'function3' ...]
def function1():
...
# etc...
現在,如果您使用from my_module import *
,您將只從 my_module.py 導入您在__all__
屬性中定義的那些函數和變量。
我建議您通過適當地分組功能並將其放入單獨的模塊中來拆分模塊來解決問題。
Kugel 的別名方法也很好——盡管我不鼓勵使用像“m”這樣的別名。 :o)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.