3 回答
TA贡献1818条经验 获得超11个赞
在Python 2.x print
中实际上是一个特殊的语句而不是函数*。
这也是它不能像以下一样使用的原因: lambda x: print x
请注意,(expr)
不会创建元组(它会产生expr
),但,
确实如此。这可能导致Python 2.7 之间print (x)
和之间的混淆print (x, y)
(1) # 1 -- no tuple Mister!(1,) # (1,)(1,2) # (1, 2)1,2 # 1 2 -- no tuple and no parenthesis :) [See below for print caveat.]
但是,因为在Python 2.x中print
是一个特殊的语法语句/语法构造,所以没有括号,它,
以特殊的方式处理它们 - 并且不创建元组。对print
声明的这种特殊处理使其能够以不同的方式采取不同的行动,
。
快乐的编码。
* print
Python 2中的这种行为可以更改为Python 3的行为:
from __future__ import print_function
TA贡献1780条经验 获得超1个赞
在UTF-8方面,我们有一个有趣的副作用。
>> greek = dict( dog="σκύλος", cat="γάτα" )
>> print greek['dog'], greek['cat']
σκύλος γάτα
>> print (greek['dog'], greek['cat'])
('\xcf\x83\xce\xba\xcf\x8d\xce\xbb\xce\xbf\xcf\x82', '\xce\xb3\xce\xac\xcf\x84\xce\xb1')
最后一个打印是带有十六进制字节值的元组。
TA贡献1812条经验 获得超5个赞
这一切都非常简单,与向前或向后兼容无关。
print
在版本3之前的所有Python版本中的语句的一般形式是:
print expr1, expr2, ... exprn
(依次评估每个表达式,转换为字符串并在它们之间显示空格。)
但请记住,在表达式周围加上括号仍然是相同的表达式。
所以你也可以这样写:
print (expr1), (expr2), ... (expr3)
这与调用函数无关。
添加回答
举报