Cou氏の徒然日記

ほのぼの日記ブログです。

Python3の学習 その3 (ラムダ式 と 関数内関数)

Python

ラムダ式

今回はラムダ式から。

Javaもそうですが、最近は短縮した記載方法として「ラムダ式(Lambda Expressions)」をよく耳にしますね。

Pythonにも同様に「ラムダ式」はあるようです。

書き方はこんな感じ。

 

 lambda <引数>:<式>

 

lambdaという予約語を使い、引数として渡した変数を使って式を定義する無名関数です。

例えば、「2乗」「3乗」「4乗」した値を返すラムダ式を書くとこんな感じ。

 

あとは、これを呼ぶだけ。

もちろん、1回だけ行う処理であれば、そのまま処理を書くか、ラムダ式を直接組み込んでしまえば良いですし、汎用的にするなら関数化するのが正しいので、上記のような書き方はあまりしないでしょうね。

 

■ 関数内関数

あまり用途があるのかわかりませんが、関数内関数も定義は可能で、しかも、内側の関数に渡す数値を外側の関数に定義しなくても変える方法もあるようで…。

上記のように、innner_func の引数に関しては、外側の関数(modify_num)で花にも定義していません。

そのため、modify_num呼び出し時には引数として渡すことはできないですが…

どうやら、関数の引数の後ろにさらに引数を渡すことで内部に渡せるようです。

 

実行してみると、渡せていますね。

 

ということで、試しにネストを増やしてみると…

対応さえ間違っていなければ、何重でも大丈夫なようです。

ただ、意味があるかは別ですが…。

 

ちなみに間違っていると、実行時エラーになるので、やはりそこは厳密にチェックされているようです。

 

これは、正直、「うーん…」という感じなんですが、有用な使い道はきっとあるんでしょうね。