
プログラミングでたびたび出てくる「無名関数」という言葉。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では、ちょっとした処理でも () { ... }
で済ませられる。
この違いを理解しておくと、両方の言語がグッと扱いやすくなります。