python的打印功能不完全是普通功能吗?

| 环境:python 2.x 如果
print
是内置函数,为什么它的行为不像其他函数?
print
有什么特别之处?
-----------start session--------------
>>> ord \'a\'
Exception : invalid syntax
>>> ord(\'a\')
97
>>> print \'a\'
a
>>> print(\'a\') 
a
>>> ord
<built-in function ord>
>>> print

-----------finish session--------------
    
已邀请:
简短的答案是在Python 2中,“ 0”不是函数而是语句。 在所有版本的Python中,几乎所有东西都是对象。所有对象都有一个类型。我们可以通过对对象应用
type
函数来发现对象的类型。 使用解释器,我们可以看到内置函数
sum
ord
与Python的类型系统中的函数完全相同:
>>> type(sum)
<type \'builtin_function_or_method\'>
>>> type(ord)
<type \'builtin_function_or_method\'>
但是以下表达式甚至不是有效的Python:
>>> type(print)
SyntaxError: invalid syntax
这是因为名称“ 0”本身就是一个关键字,例如“ 10”或“ 11”。关键字不是对象。 更完整的答案是,取决于上下文,context0ѭ可以是语句或函数。 在Python 3中,“ 0”不再是语句,而是函数。 在Python 2中,您可以通过在模块顶部包含以下语句,将模块中的
print
语句替换为Python 3 \的
print
函数:
from __future__ import print_function
此特殊导入仅在Python 2.6及更高版本中可用。 请参阅我的答案中的文档链接以获取更完整的说明。     
Python版本3以下的“ 0”不是函数。语言语法是一个单独的打印语句。 “ 0”不是标识符。这是一个关键字。     
关键是ѭ0是仅从python 3分支开始的内置函数。看起来您正在使用python2。 查看:
print \"foo\"; # Works in python2, not in python3
print(\"foo\"); # Works in python3
    
print比python中的函数更像关键词。解析器“知道” print的特殊语法(参数不带括号)以及如何处理。我认为Python创建者希望通过这样做来保持语法简单。正如maverik已经提到的那样,在python3中,print像任何其他函数一样被调用,如果您以旧方式进行操作,则会引发syntx错误。     

要回复问题请先登录注册