为什么 eval 函数有限制?



为什么当范围数量增加时,此代码中会出现错误? 他92岁了,你不能再下注了。

import random
from random import randint
masz = []
pmasz = '('
n = 0
for i in range(92):    
masz.append(str(randint(-10000, +10000)))   
masz.append(random.choice(['+', '-', '*', '/'])) 
pmasz += masz[n] +")" + masz[n+1]
n += 2 
print(eval((n//2-1)*"("+pmasz[:-1]))

该问题是由于括号嵌套太深。 这是一个已知问题,可能无法修复。 您可以在此处阅读详细信息。

您可以通过评估中间结果来限制嵌套深度来避免此问题。

我还建议使用ast.literal_eval,这比使用eval更安全。

最新更新