Pythonの学びメモと自分へのtips

Pythonの学びメモと自分へのtips

C++と同様に、setは、重複を許さずに、ソートされる。

ちなみに、「*」をつけると、生データを抜ける。

オブジェクトも同様に、重複は許さずに、メモリの値を見てソートされる模様。

 

key入力の受けつけかた

方法①

方法②

readlineは末尾の改行文字も読み取ります。
inputも同じように末尾の改行文字を読み取りますが、除去します。

 

特殊メソッド

__アンダーバーが2つで囲まれているもの__

 

ジェネレーター: yieldの実行手順

下記のようにyieldが沢山ある場合の実行順序、私は当初よく分からなかったです。

コツはyieldはreturn文と同じ扱い、という認識でしょうか。

上記の場合は、下記のような実行結果になります。

for name in gen:の部分で、gen_com関数が実行されます。

その戻り値である、最初のyieldがinput(“tell me your name;”)を返します。

input関数の結果がnameに入ります。

そして、20行目で大文字化されたnameがgen_com関数に渡され、

次のyieldである、f’こんにちは、{n}さん!’

が返されます。

ここまでは、割と追いやすいと思います。

さて、gen_com関数は無限ループなので、main関数のfor文が回ります。

なので、for name in gen:の部分で、gen_com関数が実行されます。

この時は、

つぎのyieldである、yield f’こんbannは、{n}さん!’が戻されます。

なので、name こんbannは、JJさん!

が表示されます。

そして、

が実行されます。この時の戻り値は、最初のyieldに戻り、

が実行されます。

 

さて、再びgen_com関数は無限ループなので、main関数のfor文が回ります。

なので、for name in gen:の部分で、gen_com関数が実行されます。

この時も先ほどと同様の流れで、次のyieldが返されますので、

が返されます。

というものをずっと繰り返していきます。

yield from命令

ジェネレーターの中で別のジェネレータを呼びだし、すべて値を列挙の後、自分自身のyieldを実行することができる。