python-3.x - print(eval("print(2+3)")) 打印 2 个不同的答案
问题描述
当有这个挑战时,我正在做基本的 python Hackerrank 挑战;获取输入行作为字符串并将其传递给 eval 并打印它。例如,给定的输入是
打印(2+3)
当我执行与标题相同的代码时,它打印了 2 个不同的答案。那些是
5
无
这是因为 Hackerrank 的编译器,还是在 python 中很常见?
编辑:我很好奇,因为我认为 eval 只返回一件事。
解决方案
第二个值是函数的计算结果,即函数的返回值。print()
函数的返回值为None
。因此,您的eval()
电话将评估print(2+3)
,评估为None
。“副作用”是print()
函数打印一些值,这些值发生在函数返回之前。
推荐阅读
- python - 将文件作为python模块导入后从文件中删除锁(不卸载!)
- wpf - WPF:用户控件在设计时未在 ContentControl 的 Datatemplate 内显示
- java - 使用 while 循环重新运行程序后,异常方法不起作用
- r - 针织RMarkdown html_document中的Kable(kableExtra)垂直滚动条?
- java - android studio 中的 VINTF 清单是什么?有错误
- user-interface - 在用户登录 Firebase 和 SwiftUI 后创建配置文件
- javascript - Discord js检查反应用户角色
- javascript - 如何在Javascript中将数组从字符串转换为数字?
- c# - 无法从 DB 检索数据 -> 错误 -> 实体或复杂类型 ... 无法在 LINQ to Entities 查询中构造
- python - 如何在使用 python 抓取网站时获取标签的价值?