Python 2.7 python-print换行符有时不起作用。为什么?

Python 2.7 python-print换行符有时不起作用。为什么?,python-2.7,printing,newline,Python 2.7,Printing,Newline,在Python2.7中 print("hello\nJoonho") print(a, "\nhello\nJoonho") 印刷品 “你好 “准豪” 但是 印刷品 “(3,“\nhello\nJoonho”) 你能解释一下为什么会发生这种情况吗?“print()”不是一个函数? 在Python3之前,print不是一个函数。在Python3中print是一个函数 您可以翻译python 2.7 print("hello\nJoonho") print(a, "\nhello\nJoonh

在Python2.7中

print("hello\nJoonho")
print(a, "\nhello\nJoonho")
印刷品

“你好

“准豪”

但是

印刷品

“(3,“\nhello\nJoonho”)

你能解释一下为什么会发生这种情况吗?“print()”不是一个函数?
在Python3之前,print不是一个函数。在Python3中print是一个函数

您可以翻译python 2.7

print("hello\nJoonho")
print(a, "\nhello\nJoonho")
到python 3

print((a, "\nhello\nJoonho"))
因此,您的语句实际上打印元组的表示

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

>>> repr((a, "\nhello\nJoonho"))
"(3, '\\nhello\\nJoonho')"
对象的表示通常是有效的python表达式。

在python 2中。因此,通过调用
print(a,“\nhello\nJoonho”)
,可以打印元组
(a,“\nhello\nJoonho”)

您可以通过将来导入Python 2中的函数来使用该函数:

from __future__ import print_function

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

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

因此,在
print(“hello\nJoonho”)
中,对象
(“hello\Joonho”)
将被转换为字符串(
(“hello\nJoonho”)。\uu str\ujoonho()
,结果是“hello\nJoonho”)。然后,将打印字符串
“hello\nJoonho”


print(a,“\nhello\nJoonho”)
中,
(a,“\nhello\nJoonho”)
将被转换为字符串(
(a,“\nhello\nJoonho”)。\uu str\ujoonho()“
将被打印。请注意,当第二个元组转换为字符串时,
\n
将被转义。

print
始终为您提供打印在标准输出上的对象的可打印表示形式。当你说打印(a,“\nhello\nJoonho”)时,这里的
(a,“\nhello\nJoonho”)
是一个元组,因此表示为元组对象

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

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

hello
Joonho

因为用[1]表示的对象是字符串,并且\n在字符串对象的标准输出上转换为新行。

@JoonhoPark,因为您在第一个语句中打印字符串,在第二个语句中打印元组。查看我的示例了解更多信息clarity@JoonhoPark参见我的答案,
print
函数/语句(取决于python的版本)有两种操作方式。当传递字符串时,它会将其直接写入标准输出。当传递任何其他内容时,它会将其表示形式写入标准输出。对象的表示是一个有效的python表达式,例如:
repr(“\nhello\nJoonho”)
是字符串
'\nhello\nJoonho'
@timakro
repr(“\nhello\nJoonho”)
的计算结果为
“\\nhello\\nJoonho”“”
,这是转义的,因此我不确定
print
是否使用它。在PyPy实现中,他们使用
str()
转换为字符串:我不确定是否使用了CPython,但从经验上看,他们似乎使用了类似于
str()
(我们需要检查源代码)。感谢您、FP和其他人的详细解释。但我需要选择一个。我还不是专家,在我的位置上,MohitC的解释非常清楚。谢谢大家。使用
[1]
很好!