这可能是一个愚蠢的问题,但我有点努力让它发挥作用:
假设我有两个文件:
script1.py :
myValue = 0
def addition():
global myValue
myValue += 1
if __name__ == '__main__':
addition()
print(myValue)
script2.py :
def getMyValue():
from script1 import myValue
print(myValue)
getMyValue()
输出:0
我希望我的第二个脚本访问更新后的值,这样我就可以得到“1”作为输出。 你认为我如何才能正确地做到这一点?
感谢您的回复
答案 0 :(得分:2)
变量 myValue
在 script2.py 中没有更新,因为您没有通过导入 script1 来调用 addition()
函数。那是由于条件
if __name__ == '__main__'
确保仅当您运行脚本本身时才会执行以下每个逻辑。如果您将 script1 导入另一个脚本,条件 if __name__ == '__main__'
将变为 False
,并且以下代码都不会运行。
您可以直接在 script1 中调用 addition()
,这不是一个非常干净的解决方案 -
script1:
myValue = 0
def addition():
global myValue
myValue += 1
addition()
或者重新考虑 addition()
是否真的需要对全局变量进行操作。请注意,python 中的全局变量只是一个模块内的全局变量,而不是跨多个模块的全局变量,因此将变量和函数都导入脚本 2 将不允许您在脚本 2 中以预期的效果调用 addition()
。但是,我建议让它接受这样的参数 - script1:
myValue = 0
def addition(a_value):
a_value += 1
return a_value
if __name__ == '__main__':
myValue = addition(myValue)
print(myValue)
然后调用script2中的加法函数,例如如下——script2:
from script1 import *
def getMyValue():
my_new_value = addition(myValue)
print(my_new_value)
getMyValue()