[Python] 有點奇怪的 import…
最近在學 Python 的 import 指令,發現有一些奇怪的地方,
像是搞不懂如果在模組中定義了一個物件,
然後很多人去 import 那個模組的話,會跑出很多個物件嗎?之類的問題…
後來發現,實驗一下比較快… 😛
假設有兩個模組 a.py 和 b.py,下面是 a.py 的定義:
class A:
def __init__(self, input):
print “init A=”, input
def __init__(self, input):
print “init A=”, input
def func_a():
print “this is func a”
a = A(1)
下面是模組 b.py 的定義:
class B:
def __init__(self, input):
print “init B=”, input
def __init__(self, input):
print “init B=”, input
def func_b():
print “this is func b”
b = B(2)
下面是我的測試程式,我從 a 模組中匯入了 func_a 這個函式,也匯入了整個 b 模組:
from a import func_a
import b
import b
func_a()
執行的結果如下:
init A= 1
init B= 2
this is func a
init B= 2
this is func a
也就是說,即使我只從 a 模組匯入了 func_a 這個函式,但其餘在全域的部分其實還是會執行到,
而匯入整個 b 模組的部分,自然也是把全域的部分都執行了~
差別在於 from … import … 的時候,只有被 import 進來的名稱才可以參考的到~
另外一個測試是,多次的 import 會如何呢?
import a
import a
from a import *
from a import *
import a
from a import *
from a import *
func_a()
執行的結果如下,看起來多次的 import 並不會再重新執行一次全域的部分:
init A= 1
this is func a
this is func a
(本頁面已被瀏覽過 279 次)