我正在阅读有关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,
时,它会给出
结果为<'生日快乐,亲爱的',''安德烈','。'>
我无法理解结果中的这些差异。 你能否对此有所了解?
答案 0 :(得分: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中产生完全相同的结果。
答案 1 :(得分:3)
在Python2中,print是一个声明。在Python3中,它是一个函数
对于一些简单的情况,它与括号的作用相同,但一般情况下,它并不像在print语句周围打一个parens将其移植到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',)
vs
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
答案 2 :(得分:1)
如前所述,print是Python 2中的一个声明 然后,当你打印('xxx'),整个
('xxx')
首先解释。单个parens被忽略,因此这只是一个打印的字符串。
当你执行'string'+ name +'string'时,首先连接(添加)其他字符串,从而产生一个字符串。 然后在parens中进行评估,返回,然后打印。
相反,当你打印('x','y','z')时,整个
('x', 'y', 'z')
是元组,打印为&lt;'生日快乐,亲爱的',''安德烈','。'&gt;
答案 3 :(得分:0)
在print statement
中尝试str(person)