从导入发出更新变量 - Python

Issue updating variables from import - Python

我正在 Main.py 中创建我的全局变量,并尝试通过位于 States.py

中的函数进行更新

我的 Main.py 中的目标代码如下所示:

#!/usr/bin/env python
#
import States #Import created states.py

global rad
States.Update_var()
leway = 2.00/rad

我的 States.py 看起来像这样:

def Update_var():
global rad
rad = 180.000001/3.1415926

但是当我 运行 代码时,rad 变量没有更新为新值,我收到一个错误:

NameError: 全局名称 'rad' 未定义

我是 python 的新手,刚刚找到自己的脚,所以任何帮助都会很棒。谢谢

您不需要 global 变量来在模块之间传递值,只需使用函数的 return 值即可。

Main.py

#!/usr/bin/env python
#
import States #Import created states.py

rad = States.Update_var()
leway = 2.00/rad

States.py

def Update_var():
    return 180.000001/3.1415926

global 关键字仅用于指示在通常为本地的上下文中,您所指的变量是 global 变量。您在 States.py 中正确使用它,但 main.pyglobal rad 放在模块范围内。那总是错的。

在这种情况下,您正在导入 States 并尝试使用它的 module-level 变量 rad。您应该删除 main.py 中的 global rad 行(因为它没有被正确使用)并将其称为 States.rad

# states.py

rad = 0  # unset

def update_var():
    global rad
    rad = 1  # set

# main.py

import states

states.rad  # 0
states.update_var()
states.rad  # 1

如果您需要通过外部代码更新全局变量,您必须将全局变量字典传递给该代码:

main.py:

import States

States.Update_var(globals())


leway = 2.00/rad
print leway

States.py:

def Update_var(dct):
    dct["rad"] = 180.000001 / 3.1415926

将这两个文件放在一个目录中,运行:

$ python main.py
0.0349065842505

万一它会抱怨导入 States 模块有问题,请确保它可以导入,例如通过 $ export PYTHONPATH="."