[英]Best practice for nested Python module imports
假設我有一個Python模塊“main.py”:
import math # from the standard Python library
import my_own_module
...
foo = math.cos(bar)
我還需要在“my_own_module.py”中導入標准數學模塊:
import math
...
baz = math.sin(qux)
在這種情況下,我認為“main.py”中的import math
是多余的,可以省略。
在這種情況下,最佳做法是什么:
import math
,因為它是多余的? 要么, import math
保存在“main.py”中以澄清該模塊中的代碼是否需要它? 到基准math.cos
在main.py
意味着import math
是必需的main.py
,無論my_own_module.py
進口與否。 它不是多余的,也不能省略(如果你試圖省略它,你會得到一個錯誤)。
import math
做一些事情不是簡單地包括一個文件的全文為其他 人 。
它引入了一個名為math
的新命名空間 ,這個math
名稱將在您當前的命名空間中知道。
如果你省略了
import math
從你的main.py
文件,你的命令
foo = math.cos(bar)
變得非法 ,因為在main.py
命名空間中不會(識別) math
符號。
這不是,例如C ++中的#include
。 導入不是可選的。 導入模塊需要能夠引用其內容。 這對於每個執行此操作的文件都是如此。
一個好問題。 簡短的回答是肯定的,如果你在py文件中使用數學函數,那么無論在別處導入多少次,你都需要在頂部導入模塊。
當我們將一個thrid文件放入混合時,它會變得有趣,我們稱之為“explain.py”
假設您的“main.py”變為“my_functions.py”並包含一個名為foo的函數:
#my_functions.py
import math
import my_own_module
def foo(bar):
return math.cos(bar)
在my_own_module.py中:
#my_own_module.py
import math
def bar(foo):
return math.sin(foo)
最后explain.py(new main())
#main.py
import my_functions
import my_own_module
bar = my_functions.foo(10)
foo = my_own_module.bar(10)
print(foo)
print(bar)
請注意,如果調用從其他文件導入的函數,則不需要添加數學。 我希望這可以進一步明確你的詢問:)
但是,值得注意的是,這將從當前命名空間中排除數學,因此對數學函數的任何進一步調用都是無用的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.