首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >print.__doc__ vs getattr(__builtin__,"print").__doc__

print.__doc__ vs getattr(__builtin__,"print").__doc__
EN

Stack Overflow用户
提问于 2014-05-30 09:21:17
回答 2查看 845关注 0票数 10

print.__doc__输出:

代码语言:javascript
复制
SyntaxError: invalid syntax

何地as

代码语言:javascript
复制
>>> getattr(__builtin__,"print").__doc__

产出:

打印(值,.,sep=‘',end='\n',file=sys.stdout) 默认情况下,将值打印到流,或打印到sys.stdout。可选关键字参数: file :一个类似文件的对象(流);默认为当前sys.stdout。 sep:值之间插入的字符串,默认为空格。 end:在最后一个值之后追加的字符串,默认为换行符。

有人能帮助我理解为什么print.__doc__给出语法错误而不是打印文档字符串吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-30 09:38:34

在Python2中(确切地说,Python < 2.6 ),print绝对不像函数,因此没有docstring。在开始打印之前,它甚至没有对所有参数进行评估:

代码语言:javascript
复制
>>> print 42, a
42
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined

42是在评估a之前打印出来的。print是一种语句,在它后面期望0到N的逗号分隔表达式,或者在构造>> file前面,构造print.__doc__是非法的。它和if.__doc__,或者return.__doc__一样没有意义。

但是,从Python2.6开始,print函数可以在__builtin__模块中使用,但在默认情况下不会使用,因为print语句与它发生冲突,除非from __future__ import print_function禁用了对print语句的解析。

票数 17
EN

Stack Overflow用户

发布于 2014-05-30 09:24:57

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

但是,在Python3或使用from __future__ import print_function的Python2中,print是一个普通函数,您可以读取__doc__属性。

请参阅:https://docs.python.org/2/library/functions.html#print

注意:此函数通常不能作为内置功能使用,因为名称打印被识别为print语句。若要禁用该语句并使用print()函数,请在模块顶部使用以下未来语句: 从__future__导入print_function

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23951085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档