Python 打印.“文档”vs getattr(“内置打印”)。“文档”__

Python 打印.“文档”vs getattr(“内置打印”)。“文档”__,python,python-2.x,Python,Python 2.x,print.\uuuuu doc\uuuuuu输出: SyntaxError: invalid syntax 何处为 >>> getattr(__builtin__,"print").__doc__ 产出: 默认情况下,将值打印到流,或打印到sys.stdout。可选关键字参数: 文件:类似文件的对象(流);默认为当前的sys.stdout sep:在值之间插入字符串,默认为空格。 结束:最后一个值后追加的字符串,默认为换行符 有人能帮我理解为什么print.\uuuuu

print.\uuuuu doc\uuuuuu
输出:

SyntaxError: invalid syntax
何处为

>>> getattr(__builtin__,"print").__doc__
产出:

默认情况下,将值打印到流,或打印到
sys.stdout
。可选关键字参数:

文件:类似文件的对象(流);默认为当前的
sys.stdout

sep:在值之间插入字符串,默认为空格。
结束:最后一个值后追加的字符串,默认为换行符


有人能帮我理解为什么
print.\uuuuu doc\uuuuu
给出了一个语法错误,而不是打印文档字符串。

print在Python 2中不是全局可用的函数,因此不能将其视为对象。这是一份声明

但是,在Python3或Python2中,带有
from\uuuuuu future\uuuuu导入print\u函数
,而
print
是一个普通函数,您可以读取
\uuuuu文档
属性

见:

注意:由于名称print被识别为print语句,因此该函数通常不作为内置函数提供。要禁用该语句并使用print()函数,请在模块顶部使用以下future语句:

from __future__ import print_function
在Python2(确切地说是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
>打印42,a
42
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
NameError:未定义名称“a”
在评估
a
之前打印
42
print
是一条语句,它要求0到N个逗号分隔的表达式跟在它后面,可以选择前面是构造
>文件
,构造
print.\uuuu doc\uuu
是非法的。它与
if.\uuuuu doc\uuuu
return.\uuuuu doc\uuuu
一样没有意义


但是,从Python2.6开始,
打印
函数在
\uuuuuu内置
模块中可用,但默认情况下不使用,因为
打印
语句与其冲突,除非
print
语句的解析被
from\uuuuu future\uuuuu导入print\u函数禁用

+1,否则我从未想到
print
函数始终可用,而future import只是禁用了
print
语句,而不是使
打印
功能可用。
>>> print 42, a
42
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined