2017-02-28 15 views
-1

私は何かするたびに「脈拍」を返す関数を作成しようとしています。人がパルスを受信したい場合は、関数をコールバックとして渡す必要があります。私は、同じラインの新.文字としてパルスを印刷したいと思いますので、私はこれでした:python3の同じ行を関数コールバックで出力する

import time 

def do_something(do=None): 
    while True: 
     time.sleep(1) 
     if do: do('.') 

def prtn(text): 
    print(text, end=' ') 

do_something(prtn) 

をしかしコードが立ち往生し、何も印刷されません!

+1

おそらく、出力を見るために出力ストリームをフラッシュする必要があります。 – thebjorn

+0

@thebjornはい、それはうまくいきました。しかし、なぜ? –

+0

@GuerlandoOCs @stackoverflow.com/a/10019605/1810460 – Hamms

答えて

2

printは、デフォルトではバッファリングラインで、あなたは新しい行で終了していない値を印刷するprintを使用しています。したがって、結果として強制的に値を出力するには、バッファをフラッシュする必要があります。 how to do thisのいくつかの方法を参照してください。

-1

あなたはパラメータのような関数を呼び出す...

import time 

def prtn(text): 
    print(text, end=' ') 

def do_something(do=False): 
    while True: 
     time.sleep(1) 
     if prtn: prtn('.') 

do_something(do=True) 
+0

1.これはOPの問題を解決しません。2.あなたはポイントを逃しました:OP **は、パラメータとして関数を渡すことを望んでいます。 – Wombatz

関連する問題