Python for Absolute Beginners:第2章#Personal_Greeter

时间:2017-01-12 17:28:03

标签: python python-2.7 variables brackets

关于括号的简单问题。我很想知道为什么括号有时会打印出来,有时候会保持隐形&#39 ;?在这种情况下,我可以给出一个代码示例和答案,以显示我的意思。

如果我输入:

 name = "Larry"
 print(name)
 print("Hi", name)
 raw_input("Enter to exit program")

为什么我会得到这个答案:

 Larry
 ('Hi', 'Larry') 
 Enter to exit program

拉里没有括号,也没有单引号。然而('嗨','拉里')是括号和单引号?

有人可以指出发生了什么事吗?

2 个答案:

答案 0 :(得分:2)

括号中的表达式被解释为一种特殊的数据类型,一种元组 - 一起收集一些值的东西。可以在Python中使用单引号和双引号来表示字符串。

在Python 2.7中,当您print时,括号是不必要的,并且可能导致解释问题。删除它们,看看会发生什么。

与此代码比较:

a = ('hello', 3) #a tuple
print a
print 'hello', 3

另一方面,在Python 3中,括号是必要的。

答案 1 :(得分:1)

最新版的Absolute Beginners Python是2010年1月发布的第三版,适用于Python 3.您使用的是Python 2.7。在Python 2.7 print是一个语句,不需要括号。因此,当Python 2.7看到print("Hi", name)时,它会看到print和元组("Hi", name)。如果您使用的是Python 3,它会将括号解释为带有两个参数的函数调用的一部分。解决问题的正确方法是使用Python 3,因为这正是您的书所教导的。

Python 2.7:

>>> name = "Larry"
>>> print(name)
Larry
>>> print("Hi", name)
('Hi', 'Larry')

Python 3:

>>> name = "Larry"
>>> print(name)
Larry
>>> print("Hi", name)
Hi Larry

通过执行from __future__ import print_function可以使Python 2.7像Python 3一样,但我建议不要这样做,因为在阅读本书时会遇到其他不兼容问题。