假设我们有以下虚拟函数:
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
设置为默认参数是否安全,或者可能会产生意外的副作用?
stdout
,否则你应该没问题。如果你想进行这种重定向,函数仍将保留对原始stdout的引用,因此重定向将无法正常工作。 - Łukasz Rogalski