为什么在Python中执行 eval("assert(True)") 失败?

14 浏览
0 Comments

为什么在Python中执行 eval("assert(True)") 失败?

看这个:

>>> eval("assert(True)")
追踪回溯(Traceback)(最近的调用最后):
  文件“”,第1行,在中
  文件“”,第1行
    assert(True)
         ^
语法错误:无效语法

像这样评估其他函数是可以的:

>>> eval("str(5)")
'5'

那么为什么评估 assert 会失败??

0
0 Comments

问题出现的原因是因为在Python中,eval()函数只能用于表达式,而assert是一个语句。所以在eval("assert(True)")中,assert(True)被认为是一个语句而不是一个表达式,因此无法被eval()函数执行。

要解决这个问题,可以使用exec()函数来执行assert语句。可以将assert this is silly作为一个字符串传递给exec()函数,然后执行它。

以下是解决方法的示例代码:

this = silly = []
exec('assert this is silly')

这样就可以成功执行assert语句了。

至于为什么assert语句允许在它后面使用括号,是因为assert语句对这些括号并不敏感,因为它是一个简单语句。在Python中,(True)True是等价的。

以上就是关于为什么eval("assert(True)")会失败以及如何解决这个问题的内容。

0