私はコルーチンについて学んでいますが、理解できないほど奇妙に機能します...これがソースです
@coroutine
def printer():
tmp=(yield)
print tmp
def sender(coru):
coru.send("hello")
print "I'm sender"
if __name__=="__main__":
coru=printer()
sender(coru)
print "I'm master"
ショー
こんにちは
StopItertationError @ coru.send("hello")
その間、
@coroutine
def printer():
while 1:
tmp=(yield)
print tmp
def sender(coru):
coru.send("hello")
print "I'm sender"
if __name__=="__main__":
coru=printer()
sender(coru)
print "I'm master"
ショー
こんにちは
私は送信者です
私はマスターです
正しく。
だから私は疑問に思っています
コルーチンが常にループで機能する理由と、最初の例でエラーが発生する理由
バージョン 3.3 で「yield from」構文について聞きました。それは最初のものを機能させるのに役立ちますか?
サブルーチンとは異なり、すべてのコルーチン関数が同等に機能することを私は知っています。
しかし、その後、Printer 関数が終了した後、Sender に戻らずにプログラムを終了する必要があると思います。
しかし、そうです。差出人がプリンターよりも優れているということではないですか?サブルーチンとコルーチンの違いは何ですか。
読んでくれてありがとう。教えてくれたら本当にありがたいです:)