x=5
print(eval('x+1',{'__builtins__': None}))
获取错误:
TypeError: 'NoneType' object is not subscriptable
为什么我会得到上面的错误?
另外,如何为eval()函数指定几个内置方法呢?例如,仅允许max
和min
函数。
发布于 2018-08-03 02:23:06
一种可能的解决方案是让当前的全局变量清空内建
x=5
dictionary = globals()
dictionary['__builtins__'] = None
print(eval('x+1',dictionary))
发布于 2018-08-03 02:28:20
这也是为什么你不会被定义为'x‘的原因:
x=5
print(eval("x+1",{'__builtins__': __builtins__}))
你会得到:NameError: name 'x' is not defined
,因为你覆盖了所有的上下文。
但如果你就这么做了:
x=5
print(eval("x+1"))
将打印'6‘,但将使用所有的内置函数,可能你只想这样做:
x=5
print(eval("x+1",{'__builtins__': {'min': min, 'max': max, 'x': x}}))
https://stackoverflow.com/questions/51659933
复制相似问题