クイックヒント:Pythonの収量キーワードを理解します
この記事のレビューを査読してくれたShaumik Daityariに感謝します。 Pythonで関数を呼び出すと、関数は通常、リターン、例外、または端に到達するまで機能し始めます。その後、コントロールを発信者に戻します。その関数をもう一度呼び出すたびに、プロセスは
スクラッチから開始されます! あなたは人に道路上の赤い車を追跡するように頼んだと言ってください。その人は、彼らが赤い車を見つけたかどうかを尋ねる質問を受け続け、その人は「はい」または「いいえ」で答えます。その人が「はい」と答えた場合、赤い車が発見された回数が増加します。
Python:でこれを行う方法を見てみましょう
プログラムを実行した場合、何に気付きますか? 「はい」の答えの回数は常に1でキャップされていることに気づきましたか?「いいえ」と答えると、「はい」に回答することに関係なく0になりますか?
ここで、PythonのHightキーワードが登場します。利回りは、私たちが一時的に発信者への手コントロールをimport time def red_cars(answer): n = 0 while True: if answer == 'yes': n = n + 1 return n else: return n stop = time.time() + 5 * 60 while time.time() < stop: answer = raw_input('Did you spot a red car on the road? ("yes" or "no"): ') times = red_cars(answer) print 'You have spotted ' + str(times) + ' cars so far!'
で、コントロールが引き渡された時点から継続することを期待する手段です。
上記の例に解決策を与える前に、収穫量がどのように機能するかをよりよく説明するために非常に簡単な例を示しましょう。次の簡単なPythonスクリプトがあると言います:
スクリプトを実行すると、次の出力が取得されます。次のように、代わりに利回りを使用する場合は、
def step_by_step(): return 'step 1' return 'step 2' return 'step 3' step = step_by_step() for i in range (3): print step
ご覧のとおり、
値のstep 1 step 1 step 1
を作成することができました。各呼び出しでは、値が得られるポイントから継続するように。このタイプの関数はジェネレーターと呼ばれます。このような関数は、次の収量ステートメントに移動する次のメソッドへの各呼び出しと同様に、ジェネレーターのイテレーターを作成します。
メインの例(赤い車)に戻った場合、必要なタスクを実行するために次のように書くことができます。def step_by_step(): yield 'step 1' yield 'step 2' yield 'step 3' step = step_by_step() for i in range (3): print step.next()
ただし、その他の収量の使用があります。たとえば、シーケンス(例えば、Excelシートの行)を返す関数がある場合は、収量を使用できます。また、各値をメモリに一度に持たずにシーケンスを繰り返す必要があります。つまり、メモリを保存するためです。
step 1 step 2 step 3
iterablesを使用する場合は、
収量を使用することもできます。この場合、関数間を通過するのが難しい大きなリストがあります。たとえば、Itertoolsモジュールの使用量の順列と組み合わせのためのPythonの組み込み関数。 Pythonの収量キーワードに関するよくある質問(FAQ)Pythonの収量キーワードとリターンキーワードの違いは何ですか?
Pythonの収量キーワードとリターンキーワードは機能で使用されますが、さまざまな目的に役立ちます。関数が値を生成してから終了するときに、返品キーワードが使用されます。関数が値を返すと、実行が完了し、制御が発信者に渡されます。一方、利回りキーワードは、returnステートメントのような関数で使用されますが、値を生成し、関数の実行を一時停止します。この関数は、中断した場所から後で再開でき、一度にそれらをすべて計算してリストのように送り返す代わりに、時間の経過とともに一連の値を生成できるようにします。 pythonで作業しますか?
pythonの収量キーワードは、ループを備えた関数で使用されてイテレーターを作成します。関数が呼び出されると、イテレーターを返しますが、すぐに実行を開始しません。 IteratorのNext()メソッドが呼び出されると、関数が実行を開始します。利回りのキーワードに遭遇すると、引数を返してearvedと停止し、実行を一時停止します。この関数は、次の()を再度呼び出して、途切れた場所から再開できます。これにより、関数が時間の経過とともに一連の値を生成し、ジェネレーターとして動作します。 python?
確かに、Pythonでの収量キーワードを使用する簡単な例を次に示します。 simple_generator():
print(value)の値の値については、この例では、simple_generatorは利回りキーワードを使用するため、ジェネレーター関数です。 simple_generator()によって返されたジェネレーターオブジェクトを反復すると、各収量間で実行を一時停止します。 >Pythonの収量キーワードを使用すると、一度にそれらをすべて計算してリストに戻すのではなく、時間の経過とともに一連の結果を生成できる関数を書き込むことができます。これは、結果セットが大きく、メモリを保存したい場合に特に役立ちます。また、独自の反復可能なオブジェクトを作成し、ループ、包括、および繰り返し可能な機能にPythonを使用して使用することもできます。関数には、pythonの収量ステートメントとリターンステートメントの両方を含めることができますか?
はい、pythonの関数には収量と返品の両方のステートメントを含めることができます。ただし、returnステートメントが実行されると、関数の実行が終了し、コントロールが発信者に渡されることに注意することが重要です。したがって、利回り声明の前に戻り声明が実行された場合、利回りステートメントには到達しません。逆に、利回りステートメントが最初に実行された場合、関数が一時停止され、コントロールが発信者に渡されますが、機能は後で再開できます。その時点で、戻りステートメントを実行できます。 Pythonの再帰関数でHight Keywordを使用できますか?
evelo 1
higve 2hied 3
gen = simple_generator()
try:
print(next(gen))
停止を除いて:
break
この例では、停止例外をキャッチし、ループがないときにループから抜け出しますより多くの値を生む。
PythonのLambda関数の収量キーワードを使用できますか?
いいえ、PythonのLambda関数の収量キーワードを使用することはできません。これは、Lambda関数が単一の式に限定されているためであり、収量キーワードがステートメントコンテキストを導入するためです。ジェネレーター関数を作成する必要がある場合は、DEFステートメントを使用して通常の関数を定義する必要があります。
以上がクイックヒント:Pythonの収量キーワードを理解しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











このパイロットプログラム、CNCF(クラウドネイティブコンピューティングファンデーション)、アンペアコンピューティング、Equinix Metal、およびActuatedのコラボレーションであるCNCF GithubプロジェクトのARM64 CI/CDが合理化されます。 このイニシアチブは、セキュリティの懸念とパフォーマンスリムに対処します

このチュートリアルは、AWSサービスを使用してサーバーレスイメージ処理パイプラインを構築することをガイドします。 APIゲートウェイ、Lambda関数、S3バケット、およびDynamoDBと対話するECS Fargateクラスターに展開されたnext.jsフロントエンドを作成します。 th

これらのトップ開発者ニュースレターを使用して、最新のハイテクトレンドについてお知らせください! このキュレーションされたリストは、AI愛好家からベテランのバックエンドやフロントエンド開発者まで、すべての人に何かを提供します。 お気に入りを選択し、Relを検索する時間を節約してください
