だから私は答えを探しに行きました。そして、1つあることがわかりました。yield
PEP 255 から、キーワードを与えたペップ
Q. なぜ「利回り」の新しいキーワードを?代わりに組み込み関数を使用しないのはなぜですか?
A. Python では、制御フローはキーワードを介してより適切に表現されます。yield は制御構造です。また、Jython で効率的に実装するには、コンパイラがコンパイル時に潜在的な中断ポイントを判断できる必要があると考えられており、新しいキーワードによってそれが容易になります。CPython 参照実装も、どの関数がジェネレーター関数であるかを検出するために、それを大いに活用しています (ただし、「def」の代わりに新しいキーワードを使用すると、CPython の場合は解決されますが、「なぜ新しいキーワードを使用するのか?」という質問をする人はそうしません)。新しいキーワードが欲しい)。
Q: では、new キーワードを使用しない他の特別な構文を使用しないのはなぜですか? たとえば、「yield 3」の代わりに次のいずれかを使用します。
return 3 and continue
return and continue 3
return generating 3
continue return 3
return >> , 3
from generator return 3
return >> 3
return << 3
>> 3
<< 3
* 3
A: 1 つ聞き逃しましたか? 何百ものメッセージの中から、そのような代替案を示唆するものを 3 つ数え、それらから上記を抽出しました。新しいキーワードを必要としないのは良いことですが、yield を非常に明確にする方が良いでしょう。以前は無意味だったキーワードや演算子のシーケンスを理解することで、yield が発生していると推測する必要はありません。それでも、これが十分な関心を集めた場合、支持者は単一のコンセンサス提案に落ち着くべきであり、Guido はそれを発音します。