Re:ゼロから始める文系プログラマ

未経験がプログラミングを通して人生を変える

【Python・関数】~lambda~


スポンサードリンク
 

f:id:ShotaNukumizu_1000:20210405111435p:plain

おはようございます!Shotaです。今日も早速、Pythonに関する記事を書いていきます!

今日は「lambda」について詳しく解説していこうと思います!

 

【目次】

 

lambda

lambdaの基本的な使い方

lambdaは関数を定義しない一つの式です。関数のように引数を取り、必要な値を使って演算などの処理を行わせることができます。

これを使えるようになると、四則演算などの単純な処理をわざわざdefを用いてインデントする手間が省けます。

lambdaは以下のように記述します。

 

lambda 引数:実行文

 

lambdaはそのまま変数などに入れて利用できます。

lambdaは構造そのものは簡単なのですが、どの場面で使うのかが少しイメージしにくいかもしれません。実際の利用例などを見ながら、使い方を説明していきます。

 

fn = lambda x, y: print(x + y)
fn(3, 4)

 

▼実行結果

7

 

上のコードでは引数をlambdaを使ってx, yとおき、実行文ではその2つを掛け算したものをprintで出力しています。

def を使ったコードと比較してみましょう。

 

#lambda
fn = lambda x, y: print(x + y)
#関数の定義 def fn(x, y): return x + y

 

これだと関数定義よりもシンプルに書けることがわかります。

 

関数でlambdaを作る

 

#投資金額を計算する
def calc(itrt):
    return lambda x: print(f'{x}円を複利{itrt}%で運用すると、{round(x * ((100 + itrt) / 100))}円になる')

fn = calc(5)
fn_2 = calc(3)
fn(10000)
fn_2(10000)

 

▼実行結果

10000円を複利5%で運用すると、10500円になる
10000円を複利3%で運用すると、10300円になる

 

これは、fnとfn_2という2つの変数に代入したlambdaで出力させたプログラムです。それぞれ10000円に3%と5%の複利を追加した金額を表示したものです。 

 

lambda付きの関数の説明

ここでは、calcという関数定義でlambda式を使っています。

 

def calc(itrt):
    return lambda x: print(f'{x}円を複利{itrt}%で運用すると、{round(x * ((100 + itrt) / 100))}円になる')

 

この関数では、lambdaを戻り値で表示しています。この関数は呼び出すとlambdaを作って返す関数なのです。

 

このlambda式では、引数xとitrtを掛け算し、roundで四捨五入した結果をprintで出力しています。itrtは、calc関数の引数として渡されています。

calc関数は以下のようにして呼び出します。

 

fn = calc(5)
fn_2 = calc(3)
fn(10000)
fn_2(10000)

 

これで、fnとfn_2ではそれぞれcalc関数で作成されたlambdaが出力されます。引数にはそれぞれ5と3が渡されています。これにより、fnでは引数として5を使用し、fn_2では3を使用した結果を出力できます。

lambdaを関数の戻り値に設定したことで、様々な投資金額の複利をいくらでも作ることができるのです。 

 

先程のサンプルを実際に動かしてみると、lambdaには非常にユニークな特徴が存在します。それは、「lambdaが作られた時の環境を保持していること」です。lambdaはそれが作られたときにそこにあった変数などの値をすべてプログラムが終了するまで保持できます。

 

まとめ

【本日のまとめ】

  • lambdaは、その場で定義できる1行だけの関数。「lambda 引数:実行文」という形で作る。
  • lambdaの中では、それが作られた時の環境が保持し続けられていて、それらをlambda式内から利用できる。

 

 

本ブログでは、こんな感じでPythonにまつわる情報や基本的な知識、Pythonの操作方法やニュースをたくさん紹介していきます。毎週日曜日に、普段とは趣向を変えて有名な自己啓発本・ビジネス書を要約・考察するブログを書いていきます。

この記事がいいと思った人はSNSにシェアしてくれると非常に嬉しいです!

明日から例外処理について解説していきます。

今日も最後まで読んでくださりありがとうございました!

 

 

【参考図書】

gihyo.jp