Python
型アノテーション
実行時に使われるものではない
読み手やツールに伝えるためのもの
エディタ、リンターなど
関数の引数や戻り値、変数の宣言などで指定する
静的解析
フォーマッター
辞書のマージ
dict_1 | dict_2でマージすることができるようになった(Python3.9から)
dict_1とdict_2に同じキーがあった場合はdict_2が使われる
副作用なし
existing_dictionary.update(other_dictionary)
existing_dictionaryをother_dictionaryでアップデートする
副作用がある
辞書アンパック(Python3.9未満)
{**dict_1, **dict_2}でマージができる
dict_1とdict_2に同じキーがあった場合はdict_2が使われる
副作用なし
collections.ChainMap
secretsモジュール
乱数などを利用してパスワードなど、そういった情報を扱う場合に利用するモジュール
randomモジュールはそういった特性の情報を使うことには適していないため、secretsモジュールを利用する
secrets.token_hes(bytes)
secrets.compare_digest(a, b)
タイミング攻撃という手法の防御のために利用
一定の速度で比較を実施するため、攻撃者の分析から防御することができる
早い遅いでの一致している値の分析ができなくなる