print(eval("print(2+3)")) 打印 2 个不同的答案

print(eval("print(2+3)")) prints 2 different answer

当有这个挑战时,我正在做基本的 python Hackerrank 挑战;将输入行作为字符串传递给 eval 并打印出来。例如给定的输入是

print(2+3)

当我执行与标题中相同的代码时,它打印出 2 个不同的答案。那些是

5
None

发生这种情况是因为 Hackerrank 的编译器还是在 python 中很常见?

编辑:我很好奇,因为我认为 eval returns 只有一件事。

第二个值是函数的计算结果,即函数的 return 值。 print()函数的return值为None。因此,您的 eval() 调用将评估 print(2+3),其评估为 None。 'side-effect'是print()函数打印一些值,发生在之前函数return.