NameError: name 'air' is not defined

NameError: name 'air' is not defined

我是python初学者,情况是:

在test.py中:

import numpy as np
import pandas as pd
from numpy import * 

def model(file):
    import numpy as np
    import pandas as pd

    data0 = pd.ExcelFile(file)
    data = data0.parse('For Stata')
    data1 = data.values
    varnames = list(data)

    for i in range(np.shape(data)[1]):
        var = varnames[i]
        exec(var+'=np.reshape(data1[:,i],(2217,1))')

    return air

空气是'varnames'

之一

现在我在 jupyter notebook运行 中 :

file0 = 'BLPreadydata.xlsx'
from test import model
model(file0)

我得到的错误是: NameError: 名称 '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 循环来迭代变量名并查找 'air,如果找到则将其存储在另一个变量和 return 该变量中。
试试这个。

for j in varnames:
    if j=='air':
       c=j

然后return c.

return c

我在阅读 exec(.) 文档并猜测后找到了答案...

air其实是在exec(.)之后保存为局部变量...

因此,而不是

return air

return locals()['air']

感谢大家的帮助。