2016-08-11 37 views
0

我在教自己如何在Python中编程,并且我有一个关于“打印”的问题。我知道print语句嵌入了换行符“\ n”,但是我注意到每当我的代码以print语句结束时,例如print(“this is the end”),它就不会创建一个换行符。Python中打印命令的换行功能

是否Python的一个特性是非常最后打印语句的换行符被抑制?

p.s.我正在使用IDLE

+2

是什么让你认为最后的print语句不创建一个新行? –

+0

你在测试什么?尝试运行print('这是结束',end ='')',看看结果是什么。 – Kupiakos

+0

@AdamSmith如果我运行一个只打印('test')语句的脚本,解释器会吐出'test',但它不会给我一个额外的新行 – mononono

回答

4

不,Python没有这样的功能。您可能会混淆“不打印换行符”和“不以空格结束”。

例如,在bash中,它可能是这样的:

$ cat endline.py 
print('line 1') 
print('line 2') 
$ cat noendline.py 
print('line 1') 
print('line 2', end='') 
$ python3 endline.py 
line 1 
line 2 
$ python3 noendline.py 
line 1 
line 2$ echo "It did not end in a newline" 
It did not end in a newline 
$ 

注意如何noendline.py退出没有任何换行符和提示立即继续。

这适用在现场翻译,以及:

>>> print('Hello world!') 
Hello world! 
>>> print('Hello world!', end='') 
Hello world!>>> # See? 

的Windows(cmd)总是附加一个程序以新行结束:

C:\> python endline.py 
line 1 
line 2 

C:\> python noendline.py 
line 1 
line 2 
C:\> 
+0

我正在使用IDLE和Shell,但是当我输入print('Hello World!,end ='')时,新的命令提示符出现在下一行。 – mononono

+2

@ hl0202这是由于IDLE是一个包装解释器并不能准确地显示Python输出的内容,它会检测到命令末尾的输出没有以换行符结尾并自动添加它,你可以运行'sys.stdout.write('hello')'(如果你在终端中运行Python,你将不会看到这种行为 – Kupiakos

0

在Python中,\n被添加default。您可以指定结束参数,你想级联到打印语句在Python 3结束满足以下(输出崇高3复制到演示换行符):

print('Hello World', end='Arg goes here.') 

输出:

Hello WorldArg goes here.[Finished in 0.0s] # Notice no newline. 

其他方面,如果没有值传递给关键字参数end,则默认为\n

print('Hello World') 

输出:

Hello World 
[Finished in 0.0s] # Newline by default. 

观光蟒蛇略有不同2print不是一个函数(\n是默认),但是你可以在以下效仿这一行为方式:

from __future__ import print_function 
print('Hello World', end='\n') 

输出:

Hello World 
[Finished in 0.0s] # Newline specified. 

下面是在终端的交互shell中运行演示了几个例子。

在外壳(Python中2):

>>> from __future__ import print_function 
>>> print('Hello World', end='\n') 
Hello World 
>>> print('Hello World', end='\n\n') 
Hello World 

>>> print('Hello World', end='') 
Hello World>>> 
+0

如果你只是在Python解释器(Python Shell)中输入print('Hello World'),那么它会添加一个换行符,你看到字符串'Hello World',并且你没有看到额外的空行,你立即得到提示>>>。你不是吗? – mononono

+0

@ hl0202:你为什么期望一个空行?'print'不会打印换行符,这就是为什么提示不会像'print'一样继续执行输出。 – user2357112

+0

@ hl0202是的,但不是新行上的“>>>”? – Anonymous