【发布时间】:2017-08-03 09:07:00
【问题描述】:
假设我们有以下虚拟函数:
import sys
def writeline(text, stream=sys.stdout):
stream.write(text + '\n')
with open('/path/to/file', 'w') as f:
# writes to /path/to/file
writeline('foo', f)
# writes to standard output
writeline('bar')
鉴于 Python 在定义时评估函数的默认参数,将 sys.stdout 设置为默认参数是否安全,或者它可能会产生意想不到的副作用?
【问题讨论】:
-
除非你temporarily redirect
stdoutwithin your client code,否则你应该没问题。如果你想做这个重定向,函数仍然会持有对原始标准输出的引用,因此重定向将不起作用。
标签: python stdout default-value sys