我是 Python 世界的新手。我的問題是:如何將 eval() 的輸出保存在變量中?# CODEvar = eval(print("Heyo"))message = f"{var}"# RESULTNone我嘗試使用數字表達式:1+1,輸出為 2。我需要輸出為:Heyo(在本例中)我能做些什么?
3 回答

幕布斯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()

長風秋雁
TA貢獻1757條經驗 獲得超7個贊
eval() 將字符串計算為 Python 代碼?,F在如果有任何返回值,它將存儲在var變量中。在您的代碼中,打印語句None在執行后返回。所以你不會收到 None 作為消息。
例如:
如果你運行下面的代碼,你將得到 500:
def something():
return 500
var = eval("something()")
print(var)
output
500
添加回答
舉報
0/150
提交
取消