“\n”符号在python中的工作方式

“\n”符号在python中的工作方式,python,python-3.x,Python,Python 3.x,我一直认为,为了在标准输出中获得新行,我需要在print语句中添加“\n”。但最近我遇到了以下表达: print("Hello"),'\n',print("World") 这就像: print("Hello\nWorld") 有人能解释一下“\n”在打印功能之外是如何工作的,而我的标准输出知道如何得到一行新行吗? 还有,在打印功能之外的第一个表达式中,逗号符号的含义是什么?在我的jupyter笔记本上,我得到: Hello World (None, '\n', None) 所以printH

我一直认为,为了在标准输出中获得新行,我需要在print语句中添加“\n”。但最近我遇到了以下表达:

print("Hello"),'\n',print("World")
这就像:

print("Hello\nWorld")
有人能解释一下“\n”在打印功能之外是如何工作的,而我的标准输出知道如何得到一行新行吗?
还有,在打印功能之外的第一个表达式中,逗号符号的含义是什么?

在我的jupyter笔记本上,我得到:

Hello
World
(None, '\n', None)

所以printHello,“\n”,printWorld它与我的jupyter笔记本上的printHello\nWorld不同,我得到:

Hello
World
(None, '\n', None)
所以printHello,“\n”,printWorld它与printHello\nWorld不同

它们并不等同

第一个是一个表达式,它返回一个NoneType、str、NoneType的元组,因为\n是一个字符串,而print函数返回None,其类型为NoneType。然而,这个表达式还有一个副作用,就是先向stdout打印Hello,然后再向stdout打印World。由于print在默认情况下会在每次调用的末尾放置一个换行符,因此它将显示为

Hello
World
在stdout

第二个只是将Hello\nWorld打印到stdout的表达式,因为它是换行符,\n所以也显示为

Hello
World
在stdout

在REPL或jupyter笔记本或类似设备上,您将获得:

>>> print('Hello'),'\n',print('World')
Hello
World
(None, '\n', None)
>>> print('Hello\nWorld')
Hello
World
这是因为默认行为是REPL打印表达式计算结果的值,除非该值为None。因此,在第一种情况下,它在stdout上执行两个print函数获取Hello\nWorld,然后打印表达式的值,即元组None、“\n”,None

它们并不等同

第一个是一个表达式,它返回一个NoneType、str、NoneType的元组,因为\n是一个字符串,而print函数返回None,其类型为NoneType。然而,这个表达式还有一个副作用,就是先向stdout打印Hello,然后再向stdout打印World。由于print在默认情况下会在每次调用的末尾放置一个换行符,因此它将显示为

Hello
World
在stdout

第二个只是将Hello\nWorld打印到stdout的表达式,因为它是换行符,\n所以也显示为

Hello
World
在stdout

在REPL或jupyter笔记本或类似设备上,您将获得:

>>> print('Hello'),'\n',print('World')
Hello
World
(None, '\n', None)
>>> print('Hello\nWorld')
Hello
World

这是因为默认行为是REPL打印表达式计算结果的值,除非该值为None。因此,在第一种情况下,它在stdout上执行两个print函数获得Hello\nWorld,然后打印表达式的值,即元组None、“\n',None.

这是一个元组!它不等同于printHello\nWorld这将创建一个元组,逗号doit,括号不必包含print'Hello'的返回值,返回值为None、'\n',再次为None。在构建它时,您先打印“Hello”,然后打印“World”,它们会像往常一样打印最后的换行符。中间的“n”是无用的,无关紧要的。这一切都是丑陋的——你在哪里遇到的?蒂埃里,当场。你应该把这个作为实际答案发布。这是一个元组!它不等同于printHello\nWorld这将创建一个元组,逗号doit,括号不必包含print'Hello'的返回值,返回值为None、'\n',再次为None。在构建它时,您先打印“Hello”,然后打印“World”,它们会像往常一样打印最后的换行符。中间的“n”是无用的,无关紧要的。这一切都是丑陋的——你在哪里遇到的?蒂埃里,当场。你应该把它作为实际答案发布。第三行是在REPL中执行的结果;在脚本中,净效果与静默丢弃元组的效果相同,只是效率低于单个printHello\n世界,\n部分完全不必要/被忽略。第三行是在REPL中执行的结果;在脚本中,净效果与静默丢弃元组的效果相同,只是效率不如单个printHello\nWorld,\n部分完全不需要/忽略。即使printHello,printWorld也会像第一个示例一样打印。它创建一个具有两个值的元组。如果开发人员只想打印,则该\n是多余的。因为打印时的新行不是来自该行,而是由第一次打印插入的。如果我错了,请纠正我。即使是printHello,printWorld也会像第一个示例一样打印。它创建一个具有两个值的元组。如果开发人员只想打印,则该\n是多余的。因为打印时的新行不是来自该行,而是由第一次打印插入的。如果我错了,请纠正我。