iT邦幫忙

2023 iThome 鐵人賽

DAY 26
0
Software Development

Python 微進階系列 第 26

Python 微進階 Day26 - lambda(匿名函式)

  • 分享至 

  • xImage
  •  

lambda(匿名函式)

  • 當函式需求比較簡短或只用一次,就可以使用 lambda(匿名函式)
  • 只有一行運算式,並且不需命名,會直接回傳值,不用 return
  • 使用 lambda 參數1, 參數2, ... : 運算式 的方式提供給變數
  • 可使用 IIFE(immediately invoked function expression)
    • 語法:(lambda 參數1, 參數2, ... : 運算式)(引數1, 引數2, ... )
  • 常應用組合在 list 的方法內,如 map()filter()reduce()
    • 語法:map(lambda 參數: 運算式, 可迭代物件)
  • 運算式的部分也可搭配使用 if 判斷
  • 可以讓程式碼看起來比較簡潔,但如果使用太複雜的判斷,可能反而降低程式碼的可讀性與維護
  • 也可放在函式內的 return 上
b = lambda x, y: x+y
# 把 lambda 給變數 b
print(b(1, 2))
# 3
print((lambda x, y: x+y)(3, 4))
# 利用 IIFE(immediately invoked function expression) 直接使用
# 7
x = [1, 2, 3, 4]
x_filter = filter(lambda a: a>2, x)
print(list(x_filter))
# [3, 4]

x_map = map(lambda a: a * 3, x)
print(list(x_map))
# [3, 6, 9, 12]
x = lambda n: True if n<10 else False 
print(x(5))
# True
print(x(100))
# False

參考資料

次回

談談 comprehension(生成式)的部分


上一篇
Python 微進階 Day25 - generator(產生器)
下一篇
Python 微進階 Day27 - comprehension(生成式)
系列文
Python 微進階31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言