gpt4 book ai didi

python - 在 Python 中启用评估语句的自动打印?

转载 作者:行者123 更新时间:2023-12-05 07:37:11 24 4
gpt4 key购买 nike

运行 Python REPL 时,发送到控制台的顶级语句会自动打印。例如,与:

>>> x = 1
>>> x
1
>>> |

第二行评估 x 导致值被“自动打印”但是,当 x 在其他上下文中评估时,我们不会得到相同的行为 - - 例如,如果我们使用 exec:

>>> exec('x')
>>> |

类似地,使用 eval():

>>> code = compile('x = 1; x', '<string>', 'exec')
>>> eval(code)
>>> |

有没有办法让 Python 自动打印以这种方式运行的语句,就像它在 REPL 的顶层所做的那样?

虽然这个问题直接描述了 Python 代码,但我也很想知道是否可以使用 Python C API(例如使用 PyRun_SimpleStringFlags())来完成此任务。

最佳答案

https://stackoverflow.com/a/29456463/1342082 对此进行了详细讨论。特别是:

'single' is a limited form of 'exec' which accepts a source code containing a single statement (or multiple statements separated by ;) if the last statement is an expression statement, the resulting bytecode also prints the repr of the value of that expression to the standard output(!).

因此这种形式的模式将起作用:

>>> code = compile('x = 1; x', '<string>', 'single')
>>> eval(code)
1
>>> |

另请参阅 https://docs.python.org/3/library/functions.html#eval 中描述的文档。

关于python - 在 Python 中启用评估语句的自动打印?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48797498/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com