Python中如何直接运行函数打印输出的可执行代码?
实现方法
方案1:捕获标准输出后用exec()执行
不需要修改原有函数定义,是通用性最高的方案:
- 临时重定向Python的标准输出到内存变量,捕获
example()运行时打印的所有内容 - 将捕获到的字符串传给内置函数
exec()直接执行
代码示例:
import io import sys def example(): print("print('Hello')\nprint('There')") # 捕获标准输出 captured_output = io.StringIO() old_stdout = sys.stdout sys.stdout = captured_output try: example() finally: # 恢复原有标准输出,避免影响后续代码运行 sys.stdout = old_stdout # 执行捕获到的代码 code_to_run = captured_output.getvalue() exec(code_to_run)
运行后会直接输出:
Hello There
方案2:修改函数返回代码字符串(更稳妥的可选方案)
如果你可以调整原有函数的实现,更推荐直接让函数返回要执行的代码,避免捕获输出可能带入的多余空行、无关打印内容等干扰问题:
def example(): return "print('Hello')\nprint('There')" exec(example())
注意:
exec()会执行传入的任意代码,仅在你完全信任代码来源的场景下使用,不要执行未知来源的字符串,避免出现安全问题。
内容的提问来源于stack exchange,提问作者Kazil
相关产品推荐
相关产品推荐

