Python`print`将额外的文本传递给sys.stdout?

cho*_*own 5 python stdout stderr sys

这可能是我想念的愚蠢但是它确实让我挂在了一个更大的项目(c扩展)上,我正在写作.

为什么print "Hello, World!"传球None和额外的\nsys.stdout这里?

>>> import sys
>>> class StdOutHook:
...     def write(self, text):
...         sys.__stdout__.write("stdout hook received text: %s\n" % repr(text))
... 
>>> class StdErrHook:
...     def write(self, text):
...         sys.__stderr__.write("stderr hook received text: %s\n" % repr(text))
... 
>>> sys.stdout = StdOutHook()
>>> sys.stderr = StdErrHook()
>>> 
>>> def x():
...     print "Hello, World!"
... 
>>> 
>>> print x()
stdout hook received text: 'Hello, World!'
stdout hook received text: '\n'
stdout hook received text: 'None'
stdout hook received text: '\n'
>>> 
Run Code Online (Sandbox Code Playgroud)

Thi*_*ter 7

print x()打印x()隐含的返回值None

无论是更换print "Hello world"return "Hello world"或更换print x()x()