为什么在导入print_function后仍要调用print(在Python 2.6中)
为了在Python 2.6中使用3.0版本的打印功能,我们可以这样做:
from __future__ import print_function
但是在使用这个功能时,我们调用的是print()而不是print_function()。这是因为不一致,还是有其他好的理由呢?
那为什么不这样呢:
from __future__ import print
6 个回答
4
在Python 3中,print
这个关键词的用法发生了变化,从以前的语句变成了一个函数。
所以现在你不能再直接写 print value
,而是需要写成 print(value)
,否则会出现 SyntaxError
(语法错误)。
通过使用 import
,在Python 2中也可以实现这个变化,这样你就可以用和Python 3一样的语法来写程序(至少在 print
这方面是这样的)。
13
print_function
是一个叫做 FeatureName
的特性,不要把它和内置的 print
函数搞混。它是一个来自未来的特性,这样你就可以使用它所提供的内置函数。
其他特性包括:
all_feature_names = [
"nested_scopes",
"generators",
"division",
"absolute_import",
"with_statement",
"print_function",
"unicode_literals",
]
有一些特定的原因,比如当你把代码升级到更高的版本时,你的程序会保持原样,使用更新的特性,而不是 __future__
版本。此外,如果它是函数名或关键字本身,可能会让解析器感到困惑。
48
原因是,当你从 __future__
导入时,其实是在给解释器设置一个标志,让它的行为和通常有点不同。以 print_function
为例,它让 print()
这个函数可以使用,而不是像以前那样用语句来打印东西。可以说,__future__
模块是“特别的”或“神奇的”——它的工作方式和普通模块不一样。