在python 2.7中
print("hello\nJoonho")
打印
"你好
Joonho"
但是
a=3
print(a, "\nhello\nJoonho")
打印
"(3," \ nhello \ nJoonho")
你会解释为什么会这样吗? "印刷()"不是功能? 以及如何通过这个问题?
答案 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 ("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表达式。