3

我正在阅读有关 python 函数的信息并看到了这段代码:

def happyBirthday(person):
    print("Happy Birthday to you!")
    print("Happy Birthday to you!")
    print("Happy Birthday, dear " + person + ".")
    print("Happy Birthday to you!")

happyBirthday('Emily')
happyBirthday('Andre')

我不明白为什么这些括号被用于打印命令,所以我删除了它们。

def happyBirthday(person):
    print "Happy Birthday to you!"
    print "Happy Birthday to you!"
    print "Happy Birthday, dear " + person + "."
    print "Happy Birthday to you!")

happyBirthday('Emily')
happyBirthday('Andre')

即使删除了这些括号,我也得到了完全相同的结果,所以我不确定哪一个是正确的,或者我是否应该使用这些括号。真的有必要使用这些括号吗?

还有一件事。当我使用括号时+person+,结果是生日快乐,亲爱的安德烈。但是当我使用 ,person,then 它给出的结果为 <'Happy Birthday,dear',' 'Andre','.'>

我无法理解结果中的这些差异。你能对此有所了解吗?

4

4 回答 4

13

真的有必要使用这些括号吗?

在 Python 2.x 中,print是一个语句,括号是可选的。

在 Python 3.x 中,print()是一个函数,括号是强制性的。

即使在 Python 2.x 中也使用方括号被认为是一种很好的做法,以便最终过渡到 Python 3.x。

我无法理解结果中的这些差异。你能对此有所了解吗?

当您在 Python 2.x 中打印多个逗号分隔的内容时,会发生以下情况:

In [1]: print(1,2,3)
(1, 2, 3)

以上被解释为print语句后跟一个参数,它是一个元组。元组用括号和逗号呈现。

In [2]: print 1,2,3
1 2 3

以上被解释为print后跟三个参数的语句。每个参数都单独打印出来,它们之间有空格。

就与 Python 3 的兼容性而言,这两个版本都不是很好:第一个版本的呈现方式不同,而第二个版本根本不是有效的 Python 3 代码。

考虑到这一点,我建议您坚持:

print("Happy Birthday, dear " + person + ".")

这在 Python 2.x 和 Python 3.x 中产生完全相同的结果。

于 2012-04-27T13:16:15.270 回答
3

在 Python2 中,print 是一个语句。在 Python3 中它是一个函数

对于一些简单的情况,它与括号的工作方式相同,但一般来说,它并不像在 print 语句周围加上括号来将其移植到 Python3 那样简单

例如。

Python 2.7.2+ (default, Oct  4 2011, 20:06:09) 
[GCC 4.6.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> print "hi",
hi
>>> print("hi",)
('hi',)

对比

Python 3.2.2 (default, Sep  5 2011, 21:17:14) 
[GCC 4.6.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> print "hi",
  File "<stdin>", line 1
    print "hi",
             ^
SyntaxError: invalid syntax
>>> print("hi",)
hi
于 2012-04-27T13:16:53.117 回答
1

如前所述,print 是 Python 2 中的一个语句,然后,当你执行 print('xxx') 时,整个

('xxx')

首先被解释。单个括号被忽略,所以这只是一个打印的字符串。

当您执行 'string' + name + 'string' 时,首先将字符串连接(添加),从而生成一个字符串。然后在括号中对其进行评估,返回自身,然后打印。

相反,当您执行 print('x', 'y', 'z') 时,整个

('x', 'y', 'z')

是一个元组,打印为 <'Happy Birthday,dear',' 'Andre','.'>

于 2012-04-27T13:20:40.010 回答
0

尝试str(person)打印状态

于 2012-04-27T15:54:32.300 回答