在python函数中找不到用exec声明的变量

2024-03-29 13:25:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在函数中使用exec函数声明python变量。例如:

def func():
    varnames = ['x', 'y', 'z']
    vals = [5,5,'abc']
    exec(varnames[0] + '=vals[0]')
    print(x)


func()

导致错误:

^{pr2}$

但是,在locals()中确实存在“x”的情况

def func():
    varnames = ['x', 'y', 'z']
    vals = [5,5,'abc']
    exec(varnames[0] + '=vals[0]')
    print(locals())


func()

结果:

{'vals': [5, 5, 'abc'], 'x': 5, 'varnames': ['x', 'y', 'z']}

显示x存在于本地命名空间中。你知道为什么会发生这种事吗?或者我该怎么解决它吗?在


Tags: 函数声明def错误空间情况命名exec
1条回答
网友
1楼 · 发布于 2024-03-29 13:25:54

您可以通过将函数func()中的print语句从print(x)更改为print(locals()['x'])来解决这个问题。您的代码现在看起来如下所示。(在python3.3.4上测试)在python2和python3之间,“exec”命令从一个语句更改为一个函数,它改变了范围。在

def func():
    varnames = ['x','y','z']
    vals = [5,5, 'abc']
    exec(varnames[1] + '=vals[1]')
    print(locals()['y'])

相关问题 更多 >