【发布时间】:2025-12-05 10:50:02
【问题描述】:
我试图让函数的输出表现得好像它是我的输入一样。目标是从旧输出中生成新输出。
我有一些看起来像这样的代码:
def func():
BLOCK OF CODE
func()
函数中没有return语句,括号内也没有参数。
当我键入func() 来调用我的函数时,如上所示,我得到了所需的输出,这是一堆打印的语句。现在我想用那个输出做点什么来得到另一个输出。
我要做的就是有效地将一个函数的输出“管道”到另一个函数的输入中(或者,如果可能的话,甚至根本不用担心创建另一个函数,而是做一些更直接的事情)。我调查了Python 3 writing to a pipe
但这对我没有帮助。我还尝试定义另一个函数,并使用前面的函数作为参数,这也不起作用:
def another_func(func):
print another_statement
another_func(func)
我也尝试过做一个闭包(这“有点”奏效,因为它至少打印了与 func() 打印的相同的东西,但仍然不是很令人鼓舞):
def func():
def another_func():
print another_statement
BLOCK OF CODE
another_func()
最后,我尝试同时设计一个装饰器和一个嵌套函数来实现这一点,但我的函数中没有参数,这真的让我的代码丢了(根本没有打印任何东西)。
关于如何像操作输入一样操作函数的输出以便可以创建新输出的任何建议?
【问题讨论】:
-
print不是“函数的输出”,而是对流的副作用。拦截print的问题在Python 2.x 中变得额外.. 有趣.. print 是一个特殊的内置函数。 -
看我的回答......它应该工作......即使我认为它可能不建议在实际代码中使用......