Python : lambda式、型ヒント
参考書籍 : Python実践入門, Python3スキルアップ教科書
・lambda式
lambda式の構文
# lambda 引数1, 引数2, ... : 戻り値になる式
lambda式を定義し、変数に格納できる。
increment = lambda num: num + 1 increment(2) # 3
lambda式の戻り値にif文を含められる。
# Trueの戻り値 if(条件) else Falseの戻り値 func = lambda n: "even" if(n % 2 == 0) else "odd"
但し、変数に代入する場合は関数でも書けるので、関数に統一するべきである
参考 : python - E731 do not assign a lambda expression, use a def - Stack Overflow
lambda式は以下のように、無名関数の作成に使う
nums = ['one', 'two', 'three'] filtered = filter(lambda x: len(x) == 3, nums) list(filtered) # ['one', 'two']
・型ヒント
関数の引数と戻り値に型情報を付与し、コードの保守性や可読性を向上させる。
また、静的解析ツールやエディタのコード補完、コードの自動生成などにも活用される。
構文
def 関数名(arg1: arg1の型, arg2: arg2の型, ...) -> 戻り値の型 関数の処理 return 戻り値
def increment( page_num: int, last: int, *, ignore_error: bool = False) -> Optional[int]: next_page = page_num + 1 if next_page <= last: return next_page if ignore_error: return None raise ValueError('Invalid arguments')
付与された型情報はアノテーションと呼ばれる属性__annotations__に格納されるだけで、実行時の型チェックは行われない。
そのため、以下のような呼び出しも可能
increment(1, 3, ignore_error=1) # boolの型情報をもつ引数にintを渡す
変数に型ヒントを持たせることも可能
prev_page: int prev_page = page_num - 1