rank | vote | view | answer | url |
---|---|---|---|---|
92 | 1022 | 608770 | 15 | url |
输出到stderr
我知道至少三种方法这么做:
import sys
sys.stderr.write('spam\n')
print >> sys.stderr, 'spam'
from __future__ import print_function
print('spam', file=sys.stderr)
但是看起来和python的第13条宗旨相违背,所以有什么更好的方法吗?或者上面那些方法有什么可以改进?
There should be one — and preferably only one — obvious way to do it.
我发现只有这个方法短小+便捷+可读性好:
from __future__ import print_function
def warning(*objs):
print("WARNING: ", *objs, file=sys.stderr)
我会选择sys.stderr.write()
,更可读而且言简意赅的突出重点,最主要的是在所有版本都可以用.
注:Pythonic
是除了可读和效率意外才考虑的事情...如果记住前两条的话80%的代码就已经是Pythonic
了.列表推导式是一个'big thing'所以不经常用(可读性).