何を言っているかわからないタイトルになってしまっていますので説明します。
辞書型のget()メソッド
>>> data = {'lastname': 'suzuki'}
>>> print(data.get('lastname', 'nanashi'))
suzuki
>>> print(data.get('firstname', 'nanashi'))
nanashi
上記のように、辞書型(dict)の get() メソッドを使うと存在するキーであればその値、存在しなければ第2引数のデフォルト値を返却する動作が記述できます。
(第2引数を省略した場合は None が返ります。)
KeyErrorが発生せず横着できるので好んで使っています。
第2引数の評価タイミング
この第2引数、どうやら常に評価されているようです。
第1引数のキーが存在した場合、第2引数部分の評価が不要であることは明らかで、処理しないだろうと勝手に思い込んでいたのですが、そうではないようだ、ということが本ポストの内容です。
確認
確認してみます。
>>> def default_name():
... print('default works!!')
... return 'nanashi'
...
>>> data = {'lastname': 'suzuki'}
>>> print(data.get('lastname', default_name()))
default works!!
suzuki
data.get()
で lastname
キーの値は取得できていますが、第2引数の default_name()
関数が動作していることがわかります。
多くの場合は問題にならないと思いますが、第2引数に関数を記述する場合はちょっと気にしたほうが良さそうです。