首页 > 解决方案 > print(eval("print(2+3)")) 打印 2 个不同的答案

问题描述

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

打印(2+3)

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

5

这是因为 Hackerrank 的编译器,还是在 python 中很常见?

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

标签: python-3.xeval

解决方案


第二个值是函数的计算结果,即函数的返回值。print()函数的返回值为None。因此,您的eval()电话将评估print(2+3),评估为None。“副作用”是print()函数打印一些值,这些值发生函数返回之前。


推荐阅读