関数
14859
views
データの平均値を大量に求める必要があるとき、いちいち式を書いていると時間がかかります。「平均を求める」という関数を作って、その関...
リストを関数の引数にすると、複雑な処理を簡潔に表示できます。 def average(x): n = len(x) s...
同じような処理をいちいち書いている時間はありません。共通点の多い処理を見つけたら、それをまとめあげる関数を作ることが大切です。 ...
Python の lambda 式は次のように使います。 これだけだと「通常の関数定義とどう違うの?」と思いますね。下のコードを...
ハッシュ値を返すには hashlib の sha256 という関数を使います。hashlib.sha256(text.encod...
Python のドキュメンテーション文字列は三重クォートで表現します。 インデントを消したいときは textwrap の ded...
Python の変数がどこで見つかるかは、コードの読みやすさやバグの発見に直接関係します。特に関数内で外側の変数を扱うとき、LE...
Python の関数でデフォルト引数を指定すると、その値は関数が**定義されたとき**に一度だけ評価され、以降の呼び出しでは同じ...
デコレータは関数を受け取り、新しい関数を返す仕組みです。既存の関数に機能を追加したいとき、元のコードを変更せずに拡張できます。 ...
デコレータ自身がパラメータを受け取りたい場合、関数をもう一段ネストさせます。「デコレータを返す関数」を作るイメージです。 基本構...
デコレータを適用すると、元の関数の `__name__` や `__doc__` がラッパー関数のものに置き換わってしまいます。...
デコレータは関数だけでなく、クラスとしても実装できます。状態を保持したい場合や、複雑なロジックを整理したい場合に有効です。 基本...
map, filter, reduce は関数型プログラミングの基本となる高階関数です。それぞれ異なる目的を持ち、適切に使い分け...
functools.partial は関数の一部の引数を固定した新しい関数を作成します。同じ引数を何度も渡す場面で、コードの重複...
itertools モジュールはイテレータを扱うための強力なツール群を提供します。関数と組み合わせることで、メモリ効率の良いデー...
関数の合成(compose)は、複数の関数を組み合わせて新しい関数を作る手法です。Python には組み込みの compose ...
*args と **kwargs を使うと、関数が任意の数の引数を受け取れるようになります。ラッパー関数やデコレータを書く際に必...
Python 3.8 から、位置専用引数(/)とキーワード専用引数(*)を使って、引数の渡し方を制限できるようになりました。 キ...
アンパック演算子(* と **)は、引数の受け取りだけでなく、さまざまな場面で活用できます。 リスト・タプルのアンパック 複数の...
Callable 型ヒントを使うと、関数を引数として受け取る関数や、関数を返す関数の型を明確に表現できます。 基本的な使い方 C...
TypeVar を使うと、ジェネリックな関数や型を定義できます。入力と出力の型の関係を保ちながら、さまざまな型に対応する関数を作...
Protocol を使うと、ダックタイピングに型ヒントを付けられます。特定のメソッドやプロパティを持つオブジェクトを受け入れる関...
typing.overload デコレータを使うと、引数の型によって戻り値の型が変わる関数のオーバーロードを型ヒントで表現できま...
Python の関数はオブジェクトであり、さまざまな属性を持っています。これらの属性を理解すると、デバッグやメタプログラミングに...
inspect モジュールを使うと、関数のシグネチャや引数情報、ソースコードなどを動的に取得できます。 シグネチャの取得 パラメ...
exec や eval を使うと、文字列からコードを実行したり、関数を動的に生成したりできます。強力な機能ですが、セキュリティに...
async と await を使うと、非同期処理を同期的なコードのように書けます。I/O 待ちの多い処理で効率が向上します。 基...
非同期ジェネレータは async for で反復できる非同期イテラブルを作成します。ストリーミングデータの処理に適しています。 ...
再帰関数は自分自身を呼び出す関数です。階層構造やツリー構造の処理に適していますが、Python には末尾再帰最適化がないため、深...
functools.lru_cache と functools.cache を使うと、関数の結果をキャッシュして同じ引数での再計...
ジェネレータ関数は yield を使って値を逐次生成します。大量のデータをメモリに載せずに処理できるため、効率的なイテレーション...
メタクラスを使うと、クラス定義時に関数やメソッドを自動的に登録する仕組みを作れます。プラグインシステムやコマンドパターンの実装に...
ディスクリプタは `__get__`, `__set__`, `__delete__` を定義したオブジェクトで、属性アクセスを...
Python の「メソッド」は、関数がインスタンスに束縛されたものです。関数とバウンドメソッドの違いを理解すると、Python ...
コルーチンは send, throw, close メソッドで外部から制御できます。これらを使うと、双方向通信やエラーハンドリン...
asyncio.Task と asyncio.Future は非同期処理の基盤となるオブジェクトです。似ていますが、役割が異なり...
contextvars モジュールは、非同期処理でタスクごとに独立した変数を持つ仕組みを提供します。スレッドローカル変数の非同期...
非同期コンテキストマネージャは `__aenter__` と `__aexit__` を実装し、async with で使用しま...
関数の `__code__` 属性はコードオブジェクトを保持しており、関数の内部構造に関する詳細情報を提供します。 コードオブジ...
dis モジュールを使うと、Python 関数がどのようなバイトコードにコンパイルされるかを確認できます。パフォーマンス最適化や...
フレームオブジェクトは関数呼び出しの実行コンテキストを表し、コールスタックの情報を保持しています。デバッグやトレースに活用できま...
クロージャは外側のスコープの変数を参照する内部関数です。その仕組みは `__closure__` 属性、自由変数、セル変数によっ...
通常のデコレータはインスタンスメソッドを想定していますが、クラスメソッドやスタティックメソッド、さらには関数としての呼び出しにも...
functools.wraps を使うだけでは、デコレートされた関数のシグネチャが失われます。inspect.signature...
複数のデコレータを重ねた場合、適用順序と実行順序が異なります。この仕組みを理解しないと、予期しない動作が起きます。 デコレータの...
ParamSpec は Python 3.10 で導入され、デコレータで元の関数の引数型を完全に保持できます。従来の Calla...
Concatenate は ParamSpec と組み合わせて、関数の引数に新しいパラメータを追加する型を表現します。 基本的な...
TypeVarTuple は Python 3.11 で導入され、可変長のジェネリック型パラメータを表現できます。任意個の型を受...
Self 型は Python 3.11 で導入され、メソッドが自身のクラス型を返すことを正確に表現できます。継承時にも正しい型が...
関数型プログラミングの Maybe(Option)と Either(Result)パターンを Python で実装すると、エラー...
カリー化は複数の引数を取る関数を、1 つの引数を取る関数のチェーンに変換する手法です。部分適用と組み合わせることで柔軟な関数合成...
トランポリンは末尾再帰をループに変換し、スタックオーバーフローを防ぐ手法です。Python は末尾再帰最適化をしないため、深い再...