python 的 print 函数不完全是一个普通的函数?

标签 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 中,print 不是一个函数,而是一个 statement。 .

在所有版本的 Python 中,几乎一切都是对象。所有对象都有一个类型。我们可以通过应用 type 来发现对象的类型对象的函数。

使用解释器我们可以看到内置函数 sumord正是 Python 的类型系统中的内容:

>>> type(sum)
<type 'builtin_function_or_method'>
>>> type(ord)
<type 'builtin_function_or_method'>

但是下面的表达式甚至不是有效的 Python:

>>> type(print)
SyntaxError: invalid syntax

这是因为名称print 本身就是一个关键字,如ifreturn。关键字不是对象。

更完整的答案是 print 可以是语句或函数,具体取决于上下文。

在 Python 3 中,print 不再是语句而是 function .

在 Python 2 中,您可以将模块中的 print 语句替换为 equivalent Python 3 的 print 函数,方法是在模块顶部包含以下语句:

from __future__ import print_function

此特殊导入仅适用于 Python 2.6 及更高版本。

请参阅我的回答中的文档链接以获得更完整的解释。

关于python 的 print 函数不完全是一个普通的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5741598/

相关文章:

python - lambda 表达式如何绑定(bind)到一个类?

python - 使用 Python 解析 CloudTrail 日志

python - 神经网络 : designing Cost function "not differentiable"/Tensorflow

python - 使用列表处理 IndexError 异常

python - 查找(并记录)numpy 数组切片的最大值

python - django-celery redis 内存错误

python - 如何为作为服务运行的 Python 脚本提供输入

python - 在python中读取文件的特定字节

python - 如何在谷歌应用引擎中编码我的 url 参数?

python - 拟合超越方程