Я просто «подумал». Я понял, как работают импорт и модули, но, очевидно, мне нужно больше учиться.Как импортируются работы. Почему импортированные модули не наследуют другие импортированные модули
Вот пример программы (только тест случай 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