即使没有要打印的数据,为什么print命令会给出一个新行

时间:2016-08-29 18:18:25

标签: python python-2.7 python-3.x

只输入print只能在python中输入换行符。键入print而不使用3.x中的括号也会给出换行符。为什么呢?

4 个答案:

答案 0 :(得分:6)

因为the documentation这么说

  

print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)

     

将对象打印到文本流文件,以sep分隔,然后结束。 sep,end和file(如果存在)必须作为关键字参数给出。

     

所有非关键字参数都转换为字符串,如str(),并写入流,由sep分隔,后跟end。 sep和end都必须是字符串;它们也可以是None,这意味着使用默认值。 如果没有给出任何对象,print()只会写end

     

file参数必须是带有write(string)方法的对象;如果它不存在或None,将使用sys.stdout。由于打印的参数转换为文本字符串,因此print()不能与二进制模式文件对象一起使用。对于这些,请改用file.write(...)。

     

输出是否缓冲通常由文件确定,但如果flush关键字参数为true,则强制刷新流。

     

版本3.3中已更改:添加了flush关键字参数。

请注意,end默认为'\n'这是一个新行。

答案 1 :(得分:1)

在Python 3中,print现在是一个函数。它将在语句末尾打印一个新行字符。

如果你没有指定"结束"默认情况下,它将使用换行符。

您可以通过执行以下操作来阻止此操作:

print("hello world", end="")

答案 2 :(得分:1)

有趣的是,语言在这方面有何不同。

Korn shell(ksh)中的

printpython具有相同的行为,即它添加换行符。 Bash没有print,而是依赖于echo,它也添加了一个换行符(就像python一样,可以被抑制)。

Perl中的

print没有,并且引起了很多不便,添加了另一个名为say的版本,它添加了换行符。

Ruby和PHP就像Perl一样print也没有添加换行符。当嵌入HTML时,这当然不是问题。

如果您查看其他语言,例如here,您会发现对是否应添加换行符的意见分歧。在PEP259中讨论了删除Python中的换行符。

答案 3 :(得分:1)

因为print中的默认参数是\ n结尾, 虽然如果您将打印结束变量的参数传递为\ t或空格,那么您可以看到相同的!

但它的工作原理是2.7及以上!