Python 名称错误:未定义名称“air”

Python 名称错误:未定义名称“air”,python,nameerror,Python,Nameerror,我是python初学者,情况是: 在test.py中: 空气是其中一种“变形金刚” 现在,我在jupyter笔记本中运行以下操作: 我得到的错误是: 名称错误:未定义名称“air” 编辑:我试图确定错误,它实际上来自 exec(var+'=np.reshape(data1[:,i],(2217,1))') 不知何故,当我调用函数时,它不起作用,但当我在函数外部运行它时,它确实起作用 注: 有人在MATLAB中这样做: vals = [1 2 3 4] vars = {'a', 'b', 'c'

我是python初学者,情况是:

在test.py中:

空气是其中一种“变形金刚”

现在,我在jupyter笔记本中运行以下操作:

我得到的错误是: 名称错误:未定义名称“air”

编辑:我试图确定错误,它实际上来自

exec(var+'=np.reshape(data1[:,i],(2217,1))')
不知何故,当我调用函数时,它不起作用,但当我在函数外部运行它时,它确实起作用

注: 有人在MATLAB中这样做:

vals = [1 2 3 4]
vars = {'a', 'b', 'c', 'd'}
for i = vals
    eval([vars{i} '=  vals(i)'])
end  

您应该再使用一个for循环in函数来迭代varnames并查找'air',如果找到了,则存储另一个变量并返回该变量。 试试这个

for j in varnames:
    if j=='air':
       c=j
然后返回c

return c

读了执行官的报告后,我找到了答案。博士和猜测

空气实际上在exec…之后保存为局部变量

因此

return air


谢谢你的帮助

第一次也是唯一一次提到空气是在你归还它的时候……你期望什么?你为什么要使用exec?并且不需要在函数中重新导入模块,它只是杂乱无章。@LtWorf当i=6,然后var='air',然后exec。是否空气=数据。@roganjosh我正在使用exec。因为我想把数据分配给varnames中名为var的变量。我不认为exec做了你认为它做的事情。我是什么?当你只需要做c='air'时,循环的意义是什么。这个答案比问题更模糊。对不起,这是j。c=j的赋值仍然是多余的。如果找到匹配项,为什么不直接返回j并短路回路?这个建议只与您给出的代码有关,我仍然不确定这些建议如何解决这个问题。我尝试过这个方法,它只返回字符串“air”,但air应该包含数据,因为exec@Kaleem231当您编写just return air时,Python会将其识别为变量,因此我将其定义为字符串
return c
return air
return locals()['air']