簡體   English   中英

從 Python 模塊導入多個函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM