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.
当有这个挑战时,我正在做基本的 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.