Я просто «подумал», что понял, как работают импорт и модули, но, очевидно, мне нужно больше учиться.
Вот пример программы (просто тестовый пример того, что я делаю, и который гораздо больше по объему)и масштаб) и модуль:
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's" в памяти?
Должен ли я импортировать все внутри каждого модуля, что мне нужно в этом модуле?
Я знаю, что каждый модуль имеет свое собственное пространство имен,но я думал, что он также унаследовал «глобальные переменные», включая импортированный модуль, от вызывающей программы.
У меня сложилось впечатление, что импорт из модуля * подобен вырезке и вставке кода прямо в это место.Есть ли другой способ сделать это?
Помощь очень ценится.
Нарни