为什么`print(“Hello,World!”)`和`print(“Hello”,“World!”)`产生不同的输出?

时间:2011-08-05 08:36:58

标签: python

我刚刚在Windows XP上安装了Python 2.7.2,学习如何编程。 我使用的一些教程书中给出了打印命令的示例,当我尝试它们时,我会得到不同的答案。

我希望这两个回归同样的事情 -

>>> print("Hello, World!")
Hello, World!
>>> print("Hello", "World")
('Hello', 'World')
>>> 

我试图寻找答案,但我甚至不确定如何解释我出错的地方。

5 个答案:

答案 0 :(得分:4)

由于print是Python 2.x中的一个语句,因此您获得了预期的行为。 (a,b)是一个元组,因此print (a,b)会将其打印为元组。

另一方面,print是Python 3.x中的一个函数,所以

print("hello world")

print("hello", "world")

将得出相同的答案。

从Python 2.x到3.x时,这是一个重大变化。了解差异很重要。在解释器中键入help(),然后print。您将根据Python版本获得不同的描述。

我建议查看this page,它以快速而好的方式描述之前有效的方法,以及现在有效的方法。

答案 1 :(得分:0)

这不是你的想法。这是一个论点,它是一个元组。

x=("Hello", "World")
>>> type(x)
<type 'tuple'>

它的工作原理是因为打印不是一个功能而是一个statement

注意:在python 3中print is a function

答案 2 :(得分:0)

在第一种情况下,您调用print方法作为参数传递"Hello World!"。在Python 2.7中,您不需要大括号,因此您也可以将其写为

print "Hello World!"

在第二种情况下,您创建一个元组("Hello", "World")并将其传递给print。因此打印元组。您没有将两个参数传递给print。你只传递一个元组。

答案 3 :(得分:0)

在Python 2.x中,print是一个语句而不是函数。陈述没有假装

print 'Hello World'

这有点棘手,并且会在Python 3中发生变化。您可以通过在sctipt开头添加以下导入来激活python 2中的此行为:

from __future__ import print_fuction

然后,打印将成为一个功能,你会像这样称呼它

print('Hello World')

您在示例中看到的差异是('Hello','World')是一个元组,而('Hello World')是一个字符串。

the Python doc所述:

  

元组由许多以逗号分隔的值组成

('Hello world')没有昏迷,所以它不是一个元组。但是('Hello world')在paranthesis结束前有一个昏迷,并且是一个元组。

('Hello world')中的括号是有效的,但在这里并没有用。

开始时你应该小心这一点。元组由comas而不是括号标识。除了()是空元组。正如我们在法语中所说,“这个例外是对规则的确认”

答案 4 :(得分:-1)

这两行的区别在于:

print("Hello, World!")

- &GT;印有一个字符串,上面写着'Hello,World!'

print("Hello", "World")

- &GT;给出两个字符串并打印两个字符串。首先是“你好”,然后是“世界”