我从另一个模块导入一个模块
第一个模块
a variable initialized to None
a method
在另一个模块中,我使用
导入第一个模块from 1stmodule import method
但是我在导入时再次将变量初始化为None,如何在不更改变量的情况下仅将方法导入到第二个模块?
答案 0 :(得分:1)
您需要使用全局关键字,例如global your_var
您可以对全局进行任何更改。{{1}}有关详细信息,请参阅this question。
您还需要非常小心地修改此变量的方式和位置,因为如果您失去跟踪,您将浪费大量时间进行调试并想知道为什么变量不会回来你期望的价值。
关于全球变量的危险程度总是存在争议,但我倾向于认为 - 如果您不确定是否使用全局变量,那么您不应该&#39 ; t使用全局变量。
实际上我建议修改你的方法。
答案 1 :(得分:1)
导入模块时,Python将执行模块的代码。这就是为什么你可以通过简单地导入它来执行脚本的原因。要阻止执行模块,请添加:
if "__name__" == __main__:
# the code that should run if this file
# is run directly as a script, e.g. from
# the command line
main()
此语句告诉Python:执行main()
,但仅限于我(模块)未导入。
因此,由于您在第一个模块中在全局范围内进行了变量初始化,因此在导入该模块时会执行 。
正如@brunodesthuilliers所说:顶级模块语句仅在第一次导入时执行(对于给定的进程)