我只是「想」我明白了導入和模塊的工作原理,但顯然我需要更多的上學。導入如何工作。爲什麼進口模塊不能繼承其他進口模塊
下面是一個例子程序和模塊(只是somerthing我這樣做是在範圍和規模更大的測試案例):
quick.py
import gtk
from quick_window import *
w.show_all()
gtk.main()
quick_window.py
w = gtk.Window()
w.connect('destroy', lambda w: gtk.main_quit())
l=gtk.Label('Hello')
w.add(l)
運行我得到
$ python quick.py
Traceback (most recent call last):
File "quick.py", line 2, in <module>
from quick_window import *
File "/home/woodnt/Dropbox/python/weather_project/plugins/quick_window.py", line 3, in <module>
w = gtk.Window()
NameError: name 'gtk' is not defined
爲了得到它的工作,我也必須導入(呃,重新導入)GTK模塊中,像這樣:
import gtk
w = gtk.Window()
w.connect('destroy', lambda w: gtk.main_quit())
l=gtk.Label('Hello')
w.add(l)
我爲什麼要導入GTK不止一次?這是否意味着我在內存中有2個「gtk」?
我是否必須在模塊內導入每個模塊中的所有內容?
我知道每個模塊都有它自己的命名空間,但我認爲它也繼承了「全局變量」,包括調用程序中的導入模塊。
我一直覺得從模塊導入*就像是將代碼粘貼到該位置。還有另一種方法可以做到嗎?
非常感謝幫助。
Narnie
至少因爲你不應該假設在導入模塊也導入了特定模塊的情況下編寫模塊。 – delnan 2010-10-09 17:28:09