我在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变量没有更新到新值,我收到错误:
我非常喜欢蟒蛇,只是找到我的脚,所以任何帮助都会很棒。感谢
答案 0 :(得分:1)
您不需要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
答案 1 :(得分:1)
global
关键字仅用于表示在通常为本地的上下文中,您所指的变量是全局。您在States.py
中正确使用了它,但main.py
将global rad
放在模块范围内。这总是错的。
在这种情况下,您要导入States
并尝试使用其模块级变量rad
。您应该移除global rad
中的main.py
行(因为它没有被正确使用)并将其称为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
答案 2 :(得分: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="."