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式で複数行を実行するよりも、コールバック関数を使って実装した方がバグを発生させずにコーディングできると思います。.