通过阅读您的评论,您的实际问题似乎是:您有一个方法可以打印一些输出。如果用户调用代码,那么您希望将输出打印到终端。如果代码由另一个方法在内部调用,则不希望输出被打印。在
@mgilson建议的debug参数是一个不错的选择,但是您希望用户不知道这个选项,无论出于什么原因。在
另一种方法是在函数调用期间创建一个函数包装器来重定向stdout,然后再恢复它。像这样:import os
import sys
def suppress_print(f, *args, **kwargs):
"""Call the function f, but print to the null device
instead of the screen."""
old_stdout = sys.stdout
sys.stdout = open(os.devnull, 'w')
result = f(*args, **kwargs)
sys.stdout = old_stdout
return result
class Foo:
def bar(self):
print "This is a test."
return 42
def baz(self):
return suppress_print(self.bar)
foo = Foo()
# this should print to the terminal
foo.bar()
# this shouldn't
foo.baz()
然后,无论何时在内部调用函数,都要用suppress_print对其进行包装,输出将被压缩。请注意,这实际上是一个使用上下文管理器的好地方,但我将把它作为进一步的练习。。。在
版权声明:本文为weixin_31199791原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。