Python では `a < b < c` のように比較演算子を連鎖させて書ける。これは `a < b and b < c` と...
gunicorn を長期間運用していると、メモリ使用量が徐々に増加し、最終的に OOM Killer に殺されるという報告が後を...
ファイル I/O はプログラムのボトルネックになりやすい。適切なテクニックを使えば、読み書きの速度を大幅に改善できる。 バッファ...
Python で最も有名なアンチパターンの一つが、ミュータブルなデフォルト引数だ。特にクラスの `__init__` で発生しや...
Python でパッケージを配布するには、ディレクトリを「パッケージ」として認識させる必要がある。従来、この役割を担っていたのが...
Python でファイルを開いているときに例外が発生したら、そのファイルはどうなるのか。メモリリークは起きるのか。with 文を...
Python では `try-except` を条件分岐の代わりに使うパターンがある。特に「許可を求めるより許しを請う方が簡単」...
正規表現の量指定子(`*`、`+`、`?`、`{n,m}`)はデフォルトで「貪欲(greedy)」に動作する。できるだけ長くマッ...
Python でオブジェクト同士を `==` で比較したり、辞書のキーや集合の要素として使ったりするとき、裏で動いているのが `...
Python のオブジェクトを `print()` したとき、何が表示されるかを決めるのが `__str__` と `__rep...
Python のクラスには、通常のインスタンスメソッドに加えて、`@classmethod` と `@staticmethod`...
Python でクラスを書くとき、インスタンス変数に直接アクセスするのが基本です。しかし、値の取得や設定に処理を挟みたい場面があ...
Python の辞書はどれくらいのメモリを消費しているのか。`sys.getsizeof()` で調べようとして、想定外の結果に...
Python の for に辞書をあてると、キーだけが出てきます。 ```python data = {'英語': 59, '数...
Python の辞書がなぜ高速なのか、その秘密はハッシュテーブルという仕組みにあります。キーを指定して値を取り出す操作は、要素数...
リストの最小値と最大値はminとmaxで求めます。 a = [2, 6, 1, 9] b = min(a) c = max...
固有値と固有ベクトルは線形代数の中心的な概念であり、主成分分析(PCA)、振動解析、量子力学など幅広い分野で応用される。その意味...
ガウス消去法は連立一次方程式を解く最も基本的なアルゴリズムだ。行列を上三角行列に変形し、後退代入で解を求める。数値計算の基礎とし...
線形代数の計算には NumPy を使うのが一般的だが、行列演算の原理を理解するために純粋な Python で実装してみよう。リス...
SciPy の `integrate` モジュールは、数値積分のための強力な関数群を提供する。自前で実装するより高精度で高速であ...
数値積分は、解析的に積分できない関数や、データ点しか与えられていない場合に積分値を近似する手法だ。台形則とシンプソン則は最も基本...
数値微分は、関数の解析的な導関数がわからないとき、あるいは計算が複雑なときに近似値を求める手法だ。アイデアはシンプルだが、刻み幅...
ベータ関数は確率論・統計学で頻繁に登場する特殊関数だ。ベータ分布の正規化定数として現れ、ベイズ統計の共役事前分布でも重要な役割を...
双曲線関数は三角関数と似た性質を持ちながら、指数関数で定義される関数群だ。物理学では特殊相対性理論や懸垂線(カテナリー)の記述に...