python的匿名函数用法

python中有一种特殊的函数,不需要使用def定义来定义,也不需要给函数起个函数名,这种函数被称作匿名函数
匿名函数定义格式:
lambda 参数 : 表达式 (返回值)
匿名函数调用方法一:(lambda n,m : n+m)(1,3)
此方法优点:省内存,提高性能,函数定义用完,就会被当场销毁

print((lambda n,m : n+m)(1,3))

匿名函数调用方法二(不建议用,需要耗费内存存放函数)
a = lambda n,m : n+m
a(1,3)

a = lambda n,m : n+m
print(a(1,3))

匿名函数有个限制,就是只能有一个表达式,不用写return,返回值就是该表达式的结果。

用匿名函数有个好处,因为函数没有名字,不必担心函数名冲突。此外,匿名函数也是一个函数对象,也可以把匿名函数赋值给一个变量,再利用变量来调用该函数:

有些函数在代码中只用一次,而且函数体比较简单,使用匿名函数可以减少代码量,看起来比较"优雅

可以和map结合起来使用,map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回,遍历序列,对序列中每个元素进行函数操作,最终获取新的序列。

list1 = [21,1,2,34,3]
b = map(lambda x:x+10,list1)
print(list(b))

F:\pythonProjec\TestRequests\venv\Scripts\python.exe F:/pythonProjec/TestRequests/test001/ck_study_day_02.py
[31, 11, 12, 44, 13]

Process finished with exit code 0

也可以和filter函数结合起来使用
filter()也接收一个函数和一个序列。和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。对于序列中的元素进行筛选,最终获取符合条件的序列
以下脚本举个筛掉大等于于10,,只保留小于10的例子

list1 = [21,1,2,34,3]
# b = map(lambda x:x+10,list1)
# print(list(b))
b = filter(lambda x:x<10,list1)
print(list(b))

F:\pythonProjec\TestRequests\venv\Scripts\python.exe F:/pythonProjec/TestRequests/test001/ck_study_day_02.py
[1, 2, 3]

Process finished with exit code 0
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中的匿名函数和普通函数之间有几个区别。 首先,匿名函数的语法是使用lambda关键字定义的,而普通函数是使用def关键字定义的。匿名函数通常用于处理非常简单的逻辑,而普通函数则用于处理更复杂的程序逻辑。 其次,匿名函数没有函数名,而普通函数有一个明确的函数名。匿名函数的定义和调用都是通过lambda关键字后面的参数列表和代码块来完成的,而普通函数的定义和调用则分别使用def关键字和函数名来进行。 另外,匿名函数可以直接作为参数传递给其他函数或方法,而普通函数则需要使用函数名来进行传递。匿名函数通常用于简化代码和提高代码的可读性,特别是在需要使用一次性功能的情况下。 最后,闭包是一种特殊的函数形式,它可以将函数及其上下文中的数据一起传递。闭包能够实现较为复杂的功能,并且可以在不改变原函数代码和调用方式的情况下,在函数前面或后面增加新的功能。闭包是基于匿名函数的一种应用场景,可以通过闭包实现装饰器等功能。 综上所述,匿名函数和普通函数在语法、命名、传递方式和功能复杂度等方面存在一些区别。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Python匿名函数](https://download.csdn.net/download/weixin_38625192/13748978)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Python匿名函数、普通函数、闭包、对象当做实参时的区别](https://blog.csdn.net/qq_38923792/article/details/89503688)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值