2017-10-20 9 views
0

これは恐らく疑問な質問ですが、私はプログラミングが初めてで、再帰的な関数を設定しています。 Pythonのすべての印刷機能では、スクリプトに書かれた順番で行が印刷されること、または大きな出力に対して行が印刷されることが必ず真実であるかどうか、print文が最初にコンソールに印刷される可能性があります後でコードに(多分いくつかのメモリの遅れのため)?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

コンテンツ*を別のファイル記述子*に印刷すると、TTYへのルートが異なる場合、アウトプットは(Pythonだけでなく)任意の言語で順不同になります。ここでは、両方を標準出力に出力しているので、注文は保証されています。 Pythonの –

+0

行は、書かれたのと同じ順番で実行されます。 'print'関数を再定義/変更して、その動作を変更することができます。それは複雑になるでしょう –

答えて

0

あなたはいつもあなたがPythonでprint()機能を実行順序と出力に同じ順序を取得します。

+0

これは100%のケースではまったく真実ではありません。 'python foo.py | 'Python 3で' 'print >> stderr、" hello "'や 'print(" hello "、file = sys.stderr)')を使ってstderrに内容を出力することができます。コンテンツはstdoutに出力されます。これは、stdoutの内容がパイプを通過するためです。しかし、印刷するファイルで印刷物を修正することなく、保証が成立します。 –

+0

フラグ「flush = True」を追加するとそれが変更されますか? –

+0

それはターミナルまでです。ラインバッファリングとライン出力の場合、プロセスは常に正しい順序で出力を生成します。 – viraptor

1

printステートメントコードが書き込まれた順にstdoutに出力されます。上から下へ。それがコードが解釈される方法なので、他の方法ではできません。コンソールへの出力は、stdoutに積み重ねられたデータのラインレンディングの行であるため、メモリラグはここでは何の役割も果たしません。データが書き込まれた順番は変更できないため、年表を更新します。もちろん、あなたはいつも印刷機能自体の仕組みを使いこなすことができます。しかし、標準のライブラリ関数を改ざんすることはお勧めしません。

1

上記のように、関数は、コード内の順序で実行されます。しかし、あなたは自分が実行したい順番を変更することができます。あなたが望むことを行うためにコードに指示する権利があります。