python lanbda匿名函数(20)
在python开发中常规的函数在调用之前都需要先声明,而python还有一种匿名函数,有速写函数的功能并且匿名函数不需要声明也没有函数名字,完全不需要担心函数名冲突,具体的妙用还需要从实战练习中多多积累经验。

一.匿名函数语法:
lambda a,b,c:expression
匿名函数有以下几个特点:
1.匿名函数有关键字 lambda 修饰;
2.匿名函数冒号 : 之前的是函数的参数,匿名函数可以是无参匿名函数,也可以是带参匿名函数;
3.匿名函数冒号 : 之后是表达式,匿名函数不需要写 return,表达式的结果就是返回值;
# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:何以解忧
@Blog(个人博客地址): shuopython.com
@WeChat Official Account(微信公众号):猿说python
@Github:www.github.com @File:python_lambda.py
@Time:2019/10/5 17:48 @Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
""" #不带参数的普通函数
def sing_dog():
return True
#不带参数的匿名函数
f0 = lambda :True # 无参的匿名函数,在匿名函数的冒号前面无需写参数
print(sing_dog())
print(f0()) print("***"*20) #带参数的普通函数
def sub(a,b):
return a - b
def add(a,b):
return a + b #带参数的匿名函数
f1 = lambda a,b:a-b
f2 = lambda a,b:a+b print(sub(4,2))
print(add(4,2))
print(f1(4,2))
print(f2(4,2))
输出结果:
True
True
************************************************************
2
6
2
6
首先,匿名函数和普通函数对比之下,明显能感觉到匿名函数的使用能让代码更加简洁,当然匿名函数使用场景适用于比较简单的需求,对于复杂的计算,匿名函数是无法完成的;
其次,无参的匿名函数,在匿名函数的冒号前面无需写参数;

二.匿名函数调用:
1.匿名函数常规使用
假如有这样一个需求:传入一个字符串,对字符串根据空格拆分,并以字符串的形式返回拆分后的结果,示例代码如下:
str1 = "laowang is sing_dog " #普通函数
def get_str(str1):
# 1.将字符串拆分为列表
list1 = str1.split(" ")
# 2.将列表转为字符串并返回字符串
return "".join(list1) # 将1/2两步合并为一步完成
# return "".join(str1.split(" ")) print("打印原始字符串:",str1)
print("调用普通函数获取字符串拆分结果:",get_str(str1)) #匿名函数
f0 = lambda a:"".join(a.split(" "))
print("调用匿名函数获取字符串拆分结果:",f0(str1))
输出结果:
打印原始字符串: laowang is sing_dog
调用普通函数获取字符串拆分结果: laowangissing_dog
调用匿名函数获取字符串拆分结果: laowangissing_dog
如果对字符串转换不太熟悉的童鞋请参考:字符串/列表/元组/字典之间的相互转换
2.匿名函数使用不定长参数
# 匿名函数:通过条件表达式,返回最大值
f0 = lambda x,y: x if x> y else y
print(f0(5,10)) # 匿名函数:求三个参数的乘积
f1 = lambda x,y,z: x*y*z
print(f1(1,2,3)) # 缺省的匿名函数
f2 = lambda x,y=2: x+y #使用了默认值
print(f2(10)) #第二个参数为缺省参数,使用默认值2 # 不定长参数的匿名函数
f3 = lambda *z:z #*z返回的是一个元祖
print(f3('hello',False)) # 不定长参数的匿名函数
f4 = lambda **Arg: Arg #arg返回的是一个字典
print(f4(a=1,b=2,k="hello"))
输出结果:
10
6
12
('hello', False)
{'a': 1, 'b': 2, 'k': 'hello'}
如果对python不定长参数*argc,**kargcs 不太熟悉的话,可以在看一遍这篇文章:python函数不定长参数 *argc,**kargcs
3.匿名函数作为参数使用
其实匿名函数作为函数参数传参和普通函数传参没什么区别,示例代码如下:
def function1(a,b,):
return a if a>b else b #返回最大值 # 1.定义匿名函数
f0 = lambda b:b*10
# 2.匿名函数作为参数,调用普通函数
function1(100,f0(5)) # 上面两行代码合并为一行
function1(100 , (lambda b:b*10)(5))

三.重点总结:
1.匿名函数可以是无参匿名函数也可以是有参匿名函数;
2.匿名函数不仅可以直接当作函数调用,还能直接作为函数中的参数直接使用;
猜你喜欢:
4.python函数不定长参数 *argc,**kargcs
转载请注明:猿说Python » python匿名函数

python lanbda匿名函数(20)的更多相关文章
- Python中匿名函数与内置高阶函数详解
大家好,从今天起早起Python将持续更新由小甜同学从 初学者的角度 学习Python的笔记,其特点就是全文大多由 新手易理解 的 代码与注释及动态演示 .刚入门的读者千万不要错过! 很多人学习pyt ...
- python基础——匿名函数
python基础——匿名函数 当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便. 在Python中,对匿名函数提供了有限支持.还是以map()函数为例,计算f(x)=x2时 ...
- python基础——匿名函数及递归函数
python基础--匿名函数及递归函数 1 匿名函数语法 匿名函数lambda x: x * x实际上就是: def f(x): return x * x 关键字lambda表示匿名函数,冒号前面的x ...
- 孤荷凌寒自学python第二十天python的匿名函数与偏函数
孤荷凌寒自学python第二十天python的匿名函数与偏函数 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) Python为使函数的使用更加方便高效,可以使用两种特殊的函数简化语句书写. 一 ...
- 小学生都能学会的python(<lamda匿名函数,sorted(),filter(),map(),递归函数>)
小学生都能学会的python(<<lamda匿名函数,sorted(),filter(),map(),递归函数,二分法>> 1. lambda 匿名函数 lambda 参数: ...
- Python 之匿名函数和偏函数
匿名函数与偏函数 匿名函数 Python允许使用lambda关键字创造匿名函数,lambda表达式用于定义匿名函数,它返回可调用的函数对象,语法如下: lambda arg1, arg2, … : e ...
- python的匿名函数lambda解释及用法
lambda函数的语法只包含一个语句,如下: lambda arg1,arg2,.....argn:expression(主要是看下面的例子)代码示例: #-*- coding:utf-8 -* ...
- python基础-匿名函数、内置函数、正则表达式、模块
1. 匿名函数 1.1 有名函数 有名函数:定义了一个函数名,函数名指向内存地址:通过函数名进行访问.函数名加括号就可以运行有名函数,例如:func() def func(x, y, z = 1): ...
- (二十)python 3 匿名函数
匿名函数lambda Python使用lambda关键字创造匿名函数.所谓匿名,意即不再使用def语句这样标准的形式定义一个函数.这种语句的目的是由于性能的原因,在调用时绕过函数的栈分配.其语法是: ...
随机推荐
- umediter实现粘贴word图片
图片的复制无非有两种方法,一种是图片直接上传到服务器,另外一种转换成二进制流的base64码目前限chrome浏览器使用首先以um-editor的二进制流保存为例:打开umeditor.js,找到UM ...
- bzoj 2430: [Poi2003]Chocolate 贪心
发现每一次切割都会使另一方向所有切割次数++. 而每一刀的代价就是 cost*切割次数,故贪心按照cost从大到小排序即可. #include <bits/stdc++.h> #defin ...
- CF504E Misha and LCP on Tree 后缀自动机+树链剖分+倍增
求树上两条路径的 LCP (树上每个节点代表一个字符) 总共写+调了6个多小时,终于过了~ 绝对是我写过的最复杂的数据结构了 我们对这棵树进行轻重链剖分,然后把所有的重链分正串,反串插入到广义后缀自动 ...
- requests记录
http://docs.python-requests.org/zh_CN/latest/user/quickstart.html r = requests.get('http://httpbin.o ...
- OpenFOAM中的热传导?【翻译】
翻译自:CFD-online 帖子地址:http://www.cfd-online.com/Forums/openfoam/70758-conductive-heat-transfer-openfoa ...
- GIAC 技术大会 Redis 演讲文字稿
附录:https://mp.weixin.qq.com/s/mvAkPXBayAzT_RWFdsOt5A 观众朋友们,我是来自掌阅的工程师钱文品,今天我带来的是分享主题是:Redis 在海量数据和高并 ...
- java——反射
http://www.cnblogs.com/hxsyl/archive/2013/03/23/2977593.html
- springMVC_注解方式搭建基础环境
---恢复内容开始--- 一.jar包环境,web配置文件和Spring-MVC配置文件的,相关的modelAndview 1.配置DispatcherServlet <servlet> ...
- SpringBoot + Vue前后端分离图片上传到本地并前端访问图片
同理应该可用于其他文件 图片上传 application.yml 配置相关常量 prop: upload-folder: E:/test/ # 配置SpringMVC文件上传限制,默认1M.注意MB要 ...
- [ERR] 2006 - MySQL server has gone away如何解决
解决方案: max_allowed_packet = 16M 改大点! 文章来源:外星人来地球 欢迎关注,有问题一起学习欢迎留言.评论