TypeError: eval() takes no keyword arguments
eval TypeError: eval() takes no keyword arguments
exec TypeError: eval() takes no keyword arguments
1. 说明
代码默认会按照参数位置进行确认,因为底层直接调用C,为了速度并未做键值对映射转换的功能。
所以eval()
与exec()
使用globals
与locals
参数时,不可使用如下键值对方式传值,否则报错:
eval('add(1,2)',globals={},locals={})
exec('x=add(1,2)',globals={},locals={})
正确的写法是:
eval('add(1,2)',{},{})
exec('x=add(1,2)',{},{})
通常用作:
eval('add(1,2)', globals(), locals())
或简写 eval('add(1,2)')
exec('x=add(1,2)', globals(), locals())
或简写 exec('add(1,2)')
2. 错误表象
eval()
exec()
Thanks for reading!
– Kenny