看看这个:
>>> eval("assert(True)")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 1
assert(True)
^
SyntaxError: invalid syntax
像这样逃避其他函数可以正常工作:
>>> eval("str(5)")
'5'
那么为什么逃避断言会失败呢?
eval
用于表达式。 assert
是一个声明。你似乎认为这是一个函数,但事实并非如此。
如果你出于某种原因愿意,你可以exec
断言。
this = silly = []
exec('assert this is silly')