Python

Pythonのdataclassesでhashableなインスタンスを作るクラスを定義する

Pythonでコレクションを扱っていると、ハッシュ可能なオブジェクトの使用を求められることがままある。 例えば、辞書のキーはハッシュ可能なオブジェクトでないといけないし、集合の要素もハッシュ可能でなければならない。 これはコレクション内部のアルゴ…

Pythonの集合同士の差分を取るときに陥った落とし穴を記録しておく

WEBから取ってきたデータと既にDBに入っているデータの差分を取りたいと思うことがある。 辞書 最初は、辞書でデータを扱っていたとしよう。 companies_in_web = [{"cid": 0, "name": "Toyota"}, {"cid": 1, "name": "Nissan"}, {"cid": 2, "name": "Honda"}…

カリー化した関数に型ヒントを与える

Pythonの型ヒントに慣れるために、カリー化した関数に型ヒントを与えるというタスクをやってみる。 ちなみに、カリー化とは、複数の引数をとる関数を、一つの引数だけをとる関数のチェーンに変換する操作のことである。 以下、簡単なカリー化の例(Python)…

Pythonでの雑でガバっとした例外処理

定期的に動かすので、ある程度きちんとプログラムを書かないといけないけど、そんなに丁寧に例外処理を書いている余裕はないぞというケースがある。 そういう時、実行スクリプトでは、このように雑に例外処理を行うことが多い。 こうしておけば、とりあえず…

Pythonのloggingで独自ハンドラを作りたいとき

Pythonのloggingを利用していると、独自のハンドラを作りたくなるときがある。 そういう時には、すでにloggingに定義されているハンドラのコードを参考にすることができる。 例えば、logging.handlers.SMTPHandlerは下記のように定義されている。 https://gi…