Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
问题:从导入更新变量-Python_Python_Nameerror - Fatal编程技术网

问题:从导入更新变量-Python

问题:从导入更新变量-Python,python,nameerror,Python,Nameerror,我正在Main.py中创建全局变量,并试图通过位于my States.py中的函数进行更新 my Main.py中的目标代码如下所示: #!/usr/bin/env python # import States #Import created states.py global rad States.Update_var() leway = 2.00/rad def Update_var(): global rad rad = 180.000001/3.1415926 my States.p

我正在Main.py中创建全局变量,并试图通过位于my States.py中的函数进行更新

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

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

global rad
States.Update_var()
leway = 2.00/rad
def Update_var():
global rad
rad = 180.000001/3.1415926
my States.py看起来是这样的:

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

global rad
States.Update_var()
leway = 2.00/rad
def Update_var():
global rad
rad = 180.000001/3.1415926
但当我运行代码时,rad变量不会更新为新值,我收到一个错误:

NameError:未定义全局名称“rad”
我对python还是一个新手,刚刚开始学习,所以任何帮助都会很好。谢谢

您不需要使用
全局
变量在模块之间传递值,只需使用函数的
返回值即可

Main.py

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

rad = States.Update_var()
leway = 2.00/rad
def Update_var():
    return 180.000001/3.1415926
States.py

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

rad = States.Update_var()
leway = 2.00/rad
def Update_var():
    return 180.000001/3.1415926

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

Main.py

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

rad = States.Update_var()
leway = 2.00/rad
def Update_var():
    return 180.000001/3.1415926
States.py

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

rad = States.Update_var()
leway = 2.00/rad
def Update_var():
    return 180.000001/3.1415926

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

在本例中,您正在导入
状态
,并尝试使用其模块级变量
rad
。您应该删除
main.py
中的
global rad
行(因为它没有被正确使用),并将其称为
States.rad

# states.py

rad = 0  # unset

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


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

在本例中,您正在导入
状态
,并尝试使用其模块级变量
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.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

如果它会抱怨导入
状态
模块时出现问题,请确保可以导入该模块,例如通过
$export PYTHONPATH=“.”“

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

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

如果它会抱怨导入
状态
模块时出现问题,请确保它可以导入,例如通过
$export PYTHONPATH=“”。“

可能有用可能有用所以我不会访问Update\u var()函数?抱歉,有点困惑,是否可以使用我提交的代码获得一个示例。@Ben411916如果我没有警告您使用全局变量是代码气味,那我就是失职了。像瘟疫一样避免这种情况。谢谢,我只是在尝试一些东西,所以我不会访问Update_var()函数?抱歉,有点困惑,是否可以使用我提交的代码获得一个示例。@Ben411916如果我没有警告您使用全局变量是代码气味,那我就是失职了。像瘟疫一样避免这种情况。谢谢,我只是在尝试一些东西。那么全球()是内置的吗?本质上是在Update_var函数中生成每个变量global@Ben411916内置了
globals()
。如果您创建这两个文件并运行
python main.py
,它将打印
0.0349065842505
。快速提问,我可以从main.py中更新rad的值吗?@Ben411916是的,您可以。在顶层(外部功能)中,您可以直接这样做。在函数中,您必须声明要通过
global rad
更改的全局范围内的变量。那么global()是内置的吗?本质上是在Update_var函数中生成每个变量global@Ben411916内置了
globals()
。如果您创建这两个文件并运行
python main.py
,它将打印
0.0349065842505
。快速提问,我可以从main.py中更新rad的值吗?@Ben411916是的,您可以。在顶层(外部功能)中,您可以直接这样做。在函数中,您必须声明要通过
global rad
更改的全局范围内的变量。