2017-10-20 178 views
0

这可能是一个愚蠢的问题,但我是新手编程,我有一个递归函数设置,我试图找出。对于Python中的任何打印函数,是否必须按照写入脚本的顺序打印行或输出较大的输出,是否可以在控制台中首先打印较小长度的输出,即使打印语句是后来在代码中(也许是由于内存滞后)?Python打印命令

例子:

def test_print(): 
     #don't run this, but was meant for scale. Is there any chance the 1 would print before the list of lists? 
     print([[i for i in range(10000)] for j in range(10000)]) 
     print(1) 
+1

如果您将内容*打印到不同的文件描述符*,那么输出可能无序(使用任何语言,而不仅仅是Python),如果它们到TTY的路由不同的话。在这里,你打印两个标准输出,所以订购是有保证的。 Python中的 –

+0

行按它们写入的顺序执行。您可能会重新定义/更改“打印”功能以更改其行为。这将会很复杂 –

回答

0

您总能获得输出,你在Python执行print()功能的顺序相同的顺序。

+0

在100%的情况下,这不是非常正确的。考虑一下'pyoo foo.py | - 打印到stderr的内容(在Python 3中使用'print >> stderr,“hello”'或Python 3中的print(“hello”,file = sys.stderr))可以在之前到达TTY内容打印到标准输出,因为标准输出内容通过管道。但是如果没有打印文件被写入文件进行修改,保证就成立了。 –

+0

添加“flush = True”标志是否改变? –

+0

虽然这取决于终端。如果你是行缓冲和打印出行,你的过程将始终以正确的顺序产生输出。 – viraptor

1

打印语句按照代码写入顺序将输出堆积到标准输出中。从上到下。这是不可能的,因为这是解释代码的方式。内存滞后在这里没有任何作用,因为输出到你的控制台是一条线,用于对堆积到标准输出的数据进行线性再现。数据写入它的顺序不能改变,所以你会保持年表。当然,您可以随时随地了解打印功能本身的工作原理。但我不建议篡改标准库函数。

1

如上所述,print()函数按照它们在代码中的顺序执行。但是你自己可以改变你想要的执行顺序,毕竟你有权利指示代码去做任何你想做的事情。