脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Python - python中lambda匿名函数详解

python中lambda匿名函数详解

2022-09-22 11:58_谦信_ Python

大家好,本篇文章主要讲的是python中lambda匿名函数详解,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下

在Python中,不通过def来声明函数名字,而是通过lambda关键字来定义的函数称为匿名函数

关键字lambda表示匿名函数

语法

lambda 参数:表达式

先写lambda关键字,然后依次写匿名函数的参数,多个参数中间用逗号连接,然后是一个冒号,冒号后面写返回的表达式

lambda函数比普通函数更简洁

匿名函数有个好处:函数没有名字,不必担心函数名冲突

匿名函数与普通函数的对比 :

?
1
2
3
4
5
6
def sum_func(a, b, c):
    return a + b + c
 
sum_lambda = lambda a, b, c: a + b + c
print(sum_func(1, 10, 100)) # 111
print(sum_lambda(1, 10, 100)) # 111

可以看到,lambda适用于多个参数、一个返回值的情况(匿名函数有个限制,就是只能有一个表达式,不用写return,返回值就是该表达式的结果),可以用一个变量来接收,变量是一个函数对象,执行这个函数对象的结果与执行一个普通函数的结果是一样的

匿名函数的多种形式:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#无参数
lambda_a = lambda: 100
print(lambda_a()) # 100
 
#一个参数
lambda_b = lambda num: num * 10
print(lambda_b(5)) # 50
 
#多个参数
lambda_c = lambda a, b, c, d : a + b + c + d
print(lambda_c(1,2,3,4)) # 10
 
#表达式分支
lambda_d = lambda x: x if x % 2 == 0 else x + 1
print(lambda_d(6)) # 6
print(lambda_d(7)) # 8

可以看到,lambda的参数可以0个到多个,并且返回的表达式可以是一个复杂的表达式,只要最后的值是一个值就行了

此外,匿名函数也是一个函数对象,也可以把匿名函数赋值给一个变量,再利用变量来调用该函数:

?
1
2
3
f = lambda x: x * x
print(f) # <function <lambda> at 0x00000253B601B598>
print(f(5)) # 25

lambda作为一个参数传递

?
1
2
3
4
5
6
7
8
9
def sub_func(a, b, func):
    print('a =', a)
    print('b =', b)
    print('a - b =',func(a, b))
 
sub_func(100, 1, lambda a, b: a - b)
#a = 100
#b = 1
#a - b = 99

lambda作为函数的返回值

?
1
2
3
4
5
def func(a, b):
    return lambda c: a + b + c
return_func = func(1, 10)
print(return_func) # <function func.<locals>.<lambda> at 0x00000253B6472D90>
print(return_func(100)) # 111

匿名函数可以作为一个函数的返回值

在上面的代码中,func返回的是一个匿名函数,返回的是一个函数对象,当我们执行这个函数时,可以得到lambda函数的结果

注意:其中的a,b两个参数是func中的参数,但我们执行返回的函数return_func时,已经不在func的作用域内了,而lambda函数仍然能使用a,b参数,说明lambda函数会将它的运行环境保存一份,一直保留到它自己执行的时候使用

到此这篇关于python中lambda匿名函数详解的文章就介绍到这了,更多相关python lambda匿名函数内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/Hudas/article/details/122850338

延伸 · 阅读

精彩推荐
  • Python浅析Python中的套接字编程

    浅析Python中的套接字编程

    不可否认,互联网已成为“存在之魂”,其活动以“连接”或“网络”为特征。使用套接字的最关键的基础之一,使这些网络成为可能。本文涵盖了有关使...

    华为云开发者社区10872021-12-06
  • PythonPython基于Tkinter的Hello World入门实例

    Python基于Tkinter的Hello World入门实例

    这篇文章主要介绍了Python基于Tkinter的Hello World入门实例,以一个简单实例分析了Python中Tkinter模块的使用技巧,需要的朋友可以参考下 ...

    RobinTang5672020-07-16
  • Python利用pandas读取中文数据集的方法

    利用pandas读取中文数据集的方法

    今天小编就为大家分享一篇利用pandas读取中文数据集的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    喵爷威武9892021-03-20
  • PythonPython如何使用print()函数输出格式化字符串

    Python如何使用print()函数输出格式化字符串

    Python中内置的%操作符和format函数,都可以用于格式化字符串,下面这篇文章主要给大家介绍了关于Python如何使用print()函数输出格式化字符串的相关资料,需要...

    士别三日wyx11162021-12-25
  • Pythonflask中主动抛出异常及统一异常处理代码示例

    flask中主动抛出异常及统一异常处理代码示例

    这篇文章主要介绍了flask中主动抛出异常及统一异常处理代码示例,具有一定借鉴价值,需要的朋友可以参考下...

    designer_mtb11712021-01-06
  • PythonPython编程实现生成特定范围内不重复多个随机数的2种方法

    Python编程实现生成特定范围内不重复多个随机数的2种方法

    这篇文章主要介绍了Python编程实现生成特定范围内不重复多个随机数的2种方法,涉及Python基于random生成随机数的常见操作技巧,需要的朋友可以参考下...

    捂汗县长12762020-09-29
  • Python用python3教你任意Html主内容提取功能

    用python3教你任意Html主内容提取功能

    这篇文章主要介绍了用python3教你任意Html主内容提取功能,主要使用到了requests、lxml、json等模块,文中逐一对这几个模块做了介绍,需要的朋友可以参考下...

    腾讯DeepOcean10812021-04-16
  • PythonPython2与Python3的区别实例总结

    Python2与Python3的区别实例总结

    这篇文章主要介绍了Python2与Python3的区别,结合实例形式总结分析了Python2与Python3打印输出、编码、数值运算、异常处理等使用区别,需要的朋友可以参考下...

    Zhihua_W9182021-06-18