python - 打印换行有时不起作用。为什么呢?

时间:2017-10-16 11:27:52

标签: python-2.7 printing newline

在python 2.7中

print("hello\nJoonho")

打印

"你好

Joonho"

但是

a=3
print(a, "\nhello\nJoonho")

打印

"(3," \ nhello \ nJoonho")

你会解释为什么会这样吗? "印刷()"不是功能? 以及如何通过这个问题?

3 个答案:

答案 0 :(得分:2)

print总是为您提供在stdout上打印的对象的可打印表示。当你说print(a, "\nhello\nJoonho")时,这里(a, "\nhello\nJoonho")是一个元组,因此表示为元组对象。

为了更清楚地了解这一点: 如果你执行print(a, "\nhello\nJoonho")[1],那么它实际上会被打印为

>>> print(0, '\nhello\nJoonho')[1]

hello
Joonho

因为[1]表示的对象是一个字符串,并且\ n在字符串对象的stdout上转换为新行。

答案 1 :(得分:1)

在Python 2中,print is a statement。因此,通过调用print(a, "\nhello\nJoonho"),您将打印元组(a, "\nhello\nJoonho")

您可以通过以后导入来使用Python 2中的print()函数:

from __future__ import print_function

print语句在打印之前将对象转换为字符串:

  

print依次计算每个表达式,并将结果对象写入标准输出(见下文)。如果对象不是字符串,则首先使用字符串转换规则将其转换为字符串。

因此,在print ("hello\nJoonho")中,对象("hello\Joonho")将转换为字符串(("hello\nJoonho").__str__(),从而产生' hello \ nJoonho')。然后,将打印字符串'hello\nJoonho'

print (a, "\nhello\nJoonho")中,(a, "\nhello\nJoonho")将转换为字符串((a, "\nhello\nJoonho").__str__(),结果为"(3, '\\nhello\\nJoonho')")。然后,将打印字符串"(3, '\\nhello\\nJoonho')"。请注意,当第二个元组转换为字符串时,\n将被转义。

答案 2 :(得分:0)

在python 3打印之前不是一个函数。在python 3中,print是一个函数。

你可以翻译python 2.7

print(a, "\nhello\nJoonho")

到python 3

print((a, "\nhello\nJoonho"))

所以你的语句实际上打印了元组的表示。

这是因为当您将字符串传递给打印函数时,它会按原样打印。如果您将任何其他内容传递给print函数,例如元组,则会打印其表示形式。您还可以使用repr函数获取对象的表示形式:

>>> repr((a, "\nhello\nJoonho"))
"(3, '\\nhello\\nJoonho')"

对象的表示通常是有效的python表达式。