Имена переменных Pythons - это просто метки переменных. Когда вы import *
, все эти метки являются локальными, и когда вы затем устанавливаете базу данных, вы просто заменяете локальную переменную, а не ту, которая находится в toolsmodule. Следовательно, сделайте это:
toolsmodule.py:
database = "original"
def printdatabase():
print "Database is", database
А затем запустите:
import toolsmodule
toolsmodule.database = "newdatabase"
toolsmodule.printdatabase()
Выход
Database is newdatabase
Обратите внимание, что если вы затем из ДРУГОГО модуля также сделали import *
, изменение не отражается.
Короче говоря: НИКОГДА не используйте from x import *
. Я не знаю, почему все новички продолжают делать это, несмотря на всю документацию, о которой я знаю, что это плохая идея.