Help us understand the problem. What is going on with this article?

何故ジェネレータ関数定義は「def」を関数定義と共有して私を混乱させるのか

More than 3 years have passed since last update.

チラ裏級のメモ

何故defを使いまわしたか

PEP 255 にあった。

18-May-2001
...
No argument on either side is totally convincing, so I have consulted my language designer's intuition.

新しいキーワードを使うか否かで当時確信できなかったので言語設計者としての直感に頼った、といったところ

当初の背景はおそらく「イテレータの実装」が主眼にあった。もちろん今でもそうなのだが、後述する他の機能以外はないシンプルなものがジェネレータだった。

背景

ジェネレータベースのコルーチンにもなる変幻自在のジェネレータが今の姿になるまでには段階を踏んだ。PEP 342である。

https://www.python.org/dev/peps/pep-0342/

10-May-2005

g.send()g.throw() はここに起因する。

ネイティブコルーチンはPEP 492である。

https://www.python.org/dev/peps/pep-0492/

09-Apr-2015

Pythonは基本的に互換性を大事にする。また複数の方法より一つの方法に期待する

>>> import this
The Zen of Python, by Tim Peters

...
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
...

あとはあくまで「判断の問題」だと思われる。

互換性の問題から歪な設計が残っている部分は他にもないわけではない。それでも相当の及第点以上だからこそ今があるんだろう。今から設計を考えてどちらに倒れるかは不明だし、正直な所語っても大きな意義はないように感じる。

amedama
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away