我试图在函数中使用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存在于本地命名空间中。你知道为什么会发生这种事吗?或者我该怎么解决它吗?在
您可以通过将函数
func()
中的print语句从print(x)
更改为print(locals()['x'])
来解决这个问题。您的代码现在看起来如下所示。(在python3.3.4上测试)在python2和python3之间,“exec”命令从一个语句更改为一个函数,它改变了范围。在相关问题 更多 >
编程相关推荐