从导入发出更新变量 - 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.py
将 global 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="."
我正在 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.py
将 global 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="."