rank vote url
66 357 52 148 url

输出到stderr

我知道至少三种方法这么做:

  1. import sys
  2. sys.stderr.write('spam\n')
  3. print >> sys.stderr, 'spam'
  4. from __future__ import print_function
  5. print('spam', file=sys.stderr)

但是看起来和python的第13条宗旨相违背,所以有什么更好的方法吗?或者上面那些方法有什么可以改进?

There should be one — and preferably only one — obvious way to do it.

我发现只有这个方法短小+便捷+可读性好:

  1. from __future__ import print_function
  2. def warning(*objs):
  3. print("WARNING: ", *objs, file=sys.stderr)

我会选择sys.stderr.write(),更可读而且言简意赅的突出重点,最主要的是在所有版本都可以用.

注:Pythonic是除了可读和效率意外才考虑的事情…如果记住前两条的话80%的代码就已经是Pythonic了.列表推导式是一个'big thing'所以不经常用(可读性).

原文: https://taizilongxu.gitbooks.io/stackoverflow-about-python/content/66/README.html