从其他脚本访问主函数中的变量

时间:2021-06-27 11:14:24

标签: python python-3.x main

这可能是一个愚蠢的问题,但我有点努力让它发挥作用:

假设我有两个文件:

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”作为输出。 你认为我如何才能正确地做到这一点?

感谢您的回复

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()