为了账号安全,请及时绑定邮箱和手机立即绑定

为什么在Python 2.7中自动打印括号?

为什么在Python 2.7中自动打印括号?

qq_笑_17 2019-08-08 11:12:13
为什么在Python 2.7中自动打印括号?在Python 2.7中,以下两者都是相同的print("Hello, World!") # Prints "Hello, World!"print "Hello, World!" # Prints "Hello, World!"但是以下不会print("Hello,", "World!") # Prints the tuple: ("Hello,", "World!")print "Hello,", "World!" # Prints the words "Hello, World!"在Python 3.x括号中print是必需的,基本上使它成为一个函数,但在2.7中,两者都将使用不同的结果。我还应该print在Python 2.7中了解什么?
查看完整描述

3 回答

?
慕尼黑8549860

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声明的这种特殊处理使其能够以不同的方式采取不同的行动,

快乐的编码。


printPython 2中的这种行为可以更改为Python 3的行为:

from __future__ import print_function


查看完整回答
反对 回复 2019-08-08
?
慕神8447489

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')

最后一个打印是带有十六进制字节值的元组。


查看完整回答
反对 回复 2019-08-08
?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

这一切都非常简单,与向前或向后兼容无关。

print在版本3之前的所有Python版本中的语句的一般形式是:

print expr1, expr2, ... exprn

(依次评估每个表达式,转换为字符串并在它们之间显示空格。)

但请记住,在表达式周围加上括号仍然是相同的表达式。

所以你也可以这样写:

print (expr1), (expr2), ... (expr3)

这与调用函数无关。


查看完整回答
反对 回复 2019-08-08
  • 3 回答
  • 0 关注
  • 1021 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信