cla*_*ius 10 python python-2.x
print.__doc__ 输出:
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
在哪里
>>> getattr(__builtin__,"print").__doc__
Run Code Online (Sandbox Code Playgroud)
输出:
Run Code Online (Sandbox Code Playgroud)print(value, ..., sep=' ', end='\n', file=sys.stdout)将值打印到流,或
sys.stdout默认情况下打印.可选关键字参数:file:类文件对象(stream); 默认为当前
sys.stdout.
sep:在值之间插入的字符串,默认为空格.
end:在最后一个值后附加的字符串,默认为换行符.
任何人都可以帮助我理解为什么print.__doc__给出语法错误而不是打印文档字符串
Ant*_*ala 17
在Python 2中(或者Python <2.6非常精确)print绝对不像函数,因此没有docstring.它甚至在开始打印之前都没有评估它的所有参数:
>>> print 42, a
42
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined
Run Code Online (Sandbox Code Playgroud)
42在a评估之前打印.print期望在其后面有0到N逗号分隔的表达式,可选地在构造之前>> file,该构造print.__doc__是非法的.它没有任何意义if.__doc__,或return.__doc__.
但是从Python 2.6开始,该print 函数在__builtin__模块中可用,但默认情况下不会使用该print 语句与语句冲突,除非print语句的解析被禁用from __future__ import print_function.
Print不是作为Python 2中的函数全局提供的,因此您不能将其视为对象.这是一个声明.
from __future__ import print_function但是,在Python 3或Python 2 中,它print是一个普通函数,您可以读取该__doc__属性.
请参阅:https://docs.python.org/2/library/functions.html#print
注意:此功能通常不作为内置函数提供,因为名称print被识别为print语句.要禁用该语句并使用print()函数,请在模块顶部使用此future语句:
Run Code Online (Sandbox Code Playgroud)from __future__ import print_function