Python 中的 Lambda


Lambda 是什么

Lambda 是一个希腊字母,样子是 λ。在其他语言中,如:Java, Ruby 等等,也有Lambda。Lambda 带有一个「匿名的」意思,以 Python 来说,Lambda 是一个「匿名函数」。

那么为什么 Python 程序语言中需要 Lambda 函数呢?Lambda 函数有着简洁,快速得出结果的特性。如果不使用 Lambda,我们使用 普通的方法 也可以达到相同的效果。

Lambda 函数的使用方法

我们先来使用 def 声明 add 函数。Lambda 声明 add_via_lambda 函数

def add(x, y):
  return x + y
 
add_via_lambda = lambda x, y: (x+y)

执行看看

def add(x, y): 
  return x + y 

>>> add(1,2
3 
>>> add_via_lambda = lambda x, y: (x+y) 
>>> add_via_lambda(1,2
3

可以看出执行结果是完全一样的,聪明的你相信已经看出规律了

Python 中的 Lambda

前面的是参数,后面的是运算式。更清楚一点,跟 def 声明的函数比较

Python 中的 Lambda

运算式(expression)

Python 中的 Lambda

运用场景:map

map 基本用法,使用 def 声明函数

def square(x):
    return x ** 2

>>> iterator_1 = map(square, [1,2,3,4,5])
>>> list(iterator_1)
[1491625]

如果使用 lambda 来改写 map,可以写的更简洁,一行就可以搞定。对于我们日常运算十分有帮助。

>>> iterator_2 = map(lambda x: x ** 2, [12345])
>>> list(iterator_2) 
[1491625]

运用场景:filter

filter 的用法是 filter(函数, 列表),如果符合条件的则会被过滤出来

>>> iterator = filter((lambda x: x>2), [1,2,3,4,5])
>>> list(iterator)
[345]

可以更精简的写成一行,效果一样

>>> list(filter((lambda x: x>2), [1,2,3,4,5]))
[345]

运用场景:switch

Python 3.10 之前因为没有类似 switch 的语法,所以可能会使用 lambda 来撰写 switch 的逻辑。

def calculate(n1, n2, operator):
    switcher = {
        '+'lambda n1,n2: n1+n2,
        '-'lambda n1,n2: n1-n2,
        '*'lambda n1,n2: n1*n2,
        '/'lambda n1,n2: n1/n2,
    }
    return switcher.get(operator)(n1,n2)
>>> calculate(10,20,'+')
30

心得

Lambda 是个很有趣的语法,写的太多不易阅读,用的恰恰好却能够让程序更加精简。先从看懂语法开始,了解 Lambda 可以运用在哪些地方。感觉不錯😃

原文始发于微信公众号(程序猿技术充电站):Python 中的 Lambda

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/224937.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!