
プログラミングでたびたび出てくる「無名関数」という言葉。Pythonを使っていても、Flutter(Dart)を使っていても目にする概念ですが、この2つ、実は全然ちがう性質を持っているんです。
この記事では、**PythonのlambdaとFlutterの() {}**を比較しながら、初心者でもイメージしやすく解説していきます。
🐍 Pythonの無名関数:lambda
Pythonの無名関数は lambda を使って書きます。
pythonコピーする編集するlambda 引数: 戻り値
たとえば:
pythonコピーする編集するf = lambda x: x * 2
print(f(3)) # → 6
これは、x を受け取って x * 2 を返す関数を、その場で作って f に代入している形です。
✅ 特徴まとめ
- 名前をつけない関数(=無名関数)
- 1行でしか書けない
returnやif文,for文は使えない- よく使う場面:
sort(),map(),filter()の中など
🐦 Flutter(Dart)の無名関数:() { ... }
Flutter(Dart)では、以下のように書きます。
() {
// 複数行の処理がOK
};
たとえば Flutter でよく出てくる setState の例:
setState(() {
count += 1;
print("カウントが増えました");
});
この () { ... } が無名関数で、「引数なしの関数をその場で作って、setStateに渡す」という意味です。
✅ 特徴まとめ
- 名前なしの関数(Dartでは function literal とも)
- 複数行の処理もOK
return,if,for,awaitなどなんでも書ける- よく使う場面:UIイベント、状態管理、コールバックなど
🔍 比較表:PythonとFlutterの無名関数
| 比較項目 | Python(lambda) | Flutter(() {}) |
|---|---|---|
| 名前なし関数の記法 | lambda 引数: 式 | () { 処理 } |
| 複数行処理 | ❌ 不可(1行のみ) | ✅ OK |
| 条件分岐・ループ・return | ❌ 使えない | ✅ すべて使える |
| 主な使い道 | sort, map, filter など | setState, ボタン処理など |
| 書いた関数を変数に代入 | ✅ できる | ✅ できる |
🌕 たとえるなら…
- **Pythonの
lambda**は、「ふせんにメモするくらいの軽い処理」 - **Flutterの
() {}**は、「短編レポートくらいのしっかりした処理」
💬 おわりに:使い分けがカギ
Pythonでは、しっかり処理を書くなら def 関数名() を使い、
Flutterでは、ちょっとした処理でも () { ... } で済ませられる。
この違いを理解しておくと、両方の言語がグッと扱いやすくなります。