2017-10-20 177 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()函數按照它們在代碼中的順序執行。但是你自己可以改變你想要的執行順序,畢竟你有權利指示代碼去做任何你想做的事情。