我是 Python 世界的新手。我的问题是:如何将 eval() 的输出保存在变量中?# CODEvar = eval(print("Heyo"))message = f"{var}"# RESULTNone我尝试使用数字表达式:1+1,输出为 2。我需要输出为:Heyo(在本例中)我能做些什么?
3 回答
![?](http://img1.sycdn.imooc.com/5458692c00014e9b02200220-100-100.jpg)
幕布斯7119047
TA贡献1794条经验 获得超8个赞
Eval 将执行您作为输入提供的字符串内的任何内容,这意味着您的 print 语句将打印到标准输入。解决此问题的一种方法是stdout在调用 eval 之前将 重定向到变量。
from io import StringIO
import sys
old_stdout = sys.stdout
sys.stdout = mystdout = StringIO()
eval("print('Heyo')")
sys.stdout = old_stdout
message = mystdout.getvalue()
![?](http://img1.sycdn.imooc.com/533e4d5b0001d57502200203-100-100.jpg)
长风秋雁
TA贡献1757条经验 获得超7个赞
eval() 将字符串计算为 Python 代码。现在如果有任何返回值,它将存储在var变量中。在您的代码中,打印语句None在执行后返回。所以你不会收到 None 作为消息。
例如:
如果你运行下面的代码,你将得到 500:
def something():
return 500
var = eval("something()")
print(var)
output
500
添加回答
举报
0/150
提交
取消