\

PythonのLambda式は、無名関数(名前を持たない関数)を簡単に作成するためのシンタックスです。しかし、Lambda式は「文ではなくて式」なので、複数行は基本的にはできません。

しかし、戻り値を配列にすると、複数行の実行が可能になるようです。以下にその例を示します。

# 高階関数
def higher_order(func):
    return func()

higher_order(lambda: [print("aaaa"), print("bbbb")])
# 実行結果
# aaaa
# bbbb

ただし、難しい処理はしないで、print(“”)のように簡単な処理に限定して利用した方がよいと思われます。

また、Lambda式で複数行を実行するというようなチャレンジは行わないで、コールバック関数でしっかり実装した方が良いと思いました。以下にその例を示します。

# コールバック関数
def call_back(a, b):
    a += 1
    b = a + b + 100
    return a, b

# 高階関数
def higher_order(func, a, b):
    return func(a, b)

aa = 1
bb = 10
(aa, bb) = higher_order(call_back, aa, bb)
print("aa = " + str(aa))
print("bb = " + str(bb))

# 実行結果
# aa = 2
# bb = 111

このように、Lambda式で複数行を実行するよりも、コールバック関数を使って実装した方がバグを発生させずにコーディングできると思います。.

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です