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
本文介绍了eval()和exec()函数在使用globals和locals参数时的常见错误,指明了错误原因——不接受关键字参数,并给出了正确的传参方式,以及实际应用场景中的正确用法示例。
2177

被折叠的 条评论
为什么被折叠?



