首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么在Python2.7中print中的括号是自愿的?

为什么在Python2.7中print中的括号是自愿的?
EN

Stack Overflow用户
提问于 2011-05-31 12:18:28
回答 3查看 91.7K关注 0票数 101

在Python 2.7中,以下两个命令将执行相同的操作

代码语言:javascript
复制
print("Hello, World!") # Prints "Hello, World!"

print "Hello, World!" # Prints "Hello, World!"

但是,以下内容将不会

代码语言:javascript
复制
print("Hello,", "World!") # Prints the tuple: ("Hello,", "World!")

print "Hello,", "World!" # Prints the words "Hello, World!"

在Python3.x中,print上的括号是强制性的,本质上使其成为一个函数,但在2.7中,两者都将使用不同的结果。关于Python2.7中的print,我还应该知道些什么?

EN

回答 3

Stack Overflow用户

发布于 2011-05-31 13:33:24

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

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

代码语言:javascript
复制
print expr1, expr2, ... exprn

(依次计算每个表达式,将其转换为字符串,并在它们之间显示一个空格。)

但请记住,将括号放在表达式两边仍然是同一个表达式。

所以你也可以这样写:

代码语言:javascript
复制
print (expr1), (expr2), ... (expr3)

这与调用函数无关。

票数 5
EN

Stack Overflow用户

发布于 2012-08-16 01:05:50

在这里,当涉及到UTF-8时,我们有一个有趣的副作用。

代码语言:javascript
复制
>> 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')

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

票数 5
EN

Stack Overflow用户

发布于 2011-05-31 12:28:43

基本上,在Python3之前的Python中,print是一个特殊的语句,如果作为参数获取,它会打印所有字符串。所以print "foo","bar"的意思就是“打印'foo‘后跟'bar'”。这样做的问题是,很容易把print看作是一个函数,而Python语法在这一点上是模棱两可的,因为(a,b)是一个包含ab的元组,而foo(a,b)是对具有两个参数的函数的调用。

因此,他们对3进行了不兼容的更改,使程序更少模棱两可,更规范。

(实际上,我认为2.7在这方面的表现与2.6一样,但我不确定。)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6182964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档