3 回答

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊
Eval 將執(zhí)行您作為輸入提供的字符串內(nèi)的任何內(nèi)容,這意味著您的 print 語句將打印到標(biāo)準(zhǔn)輸入。解決此問題的一種方法是stdout在調(diào)用 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貢獻(xiàn)1878條經(jīng)驗(yàn) 獲得超4個(gè)贊
打印語句沒有返回?
var = eval("2")
message = f"{var}"
print(message)
輸出:
2

TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超7個(gè)贊
eval() 將字符串計(jì)算為 Python 代碼?,F(xiàn)在如果有任何返回值,它將存儲(chǔ)在var變量中。在您的代碼中,打印語句None在執(zhí)行后返回。所以你不會(huì)收到 None 作為消息。
例如:
如果你運(yùn)行下面的代碼,你將得到 500:
def something():
return 500
var = eval("something()")
print(var)
output
500
添加回答
舉報(bào)