python笔记---lambda表达式

lambda表达式

一、应用场景

如果一个函数有一个返回值,并且只有一句代码,可以使用lambda简化。
lambda也叫匿名函数

二、语法

lambda 参数列表 : 表达式

注:

(1) lambda表达式的函数可有可无,函数的参数在lambda表达式中完全适用。

(2) lambda表达式能接收任何数量的参数但只能返回一个表达式的值

#函数:
def fn1():
    return 200
print(fn1())
print(id(fn1()))

#lambda表达式:
fn2 = lambda: 200
print(fn2)  #输出的是lambda内存地址
print(fn2()) #200

三、示例

计算a+b

3.1 函数实现:
def add(a, b):
    return a + b
    
result = add(1, 2)
print(result)
3.2lambda实现
fn1 = lambda a, b: a + b
print(fn1(1, 2))

四、lambda的参数形式

4.1 无参数
fn1 = lambda : 100
print(fn1())
4.2 一个参数
fn2 = lambda a: a
print(fn2('hello world'))
4.3 默认参数
fn3 = lambda a, b, c=100: a + b + c
print(fn3(10, 20))  #130
print(fn3(10, 20, 30))  #60
注:如果默认参数c被传了值,则会覆盖原有的数据,用新的数据来调用。
4.4 可变参数:*args

*args接收不定长的位置参数,返回值为元组

fn4 = lambda *args: args
print(fn4(10, 20, 30))  #(10, 20, 30)
4.5 可变参数:**kwargs

**kwargs接收不定长的关键字参数,返回的是字典

fn5 = lambda **kwargs: kwargs
print(fn5(name='python', age=20))  
# {'name': 'python', 'age': 20}

五、lambda应用

5.1 带判断的lambda
print((lambda a, b: a if a > b else b)(1000, 500))
5.2 列表数据按字典key的值排序
students = [
 {'name': 'TOM', 'age': 20},
 {'name': 'ROSE', 'age': 19},
 {'name': 'Jack', 'age': 22} 
 
# 按name值升序排列
students.sort(key=lambda x: x['name'])
print(students)
# 按name值降序排列
students.sort(key=lambda x: x['name'], reverse=True)
print(students)
# 按age值升序排列
students.sort(key=lambda x: x['age'])
print(students)

六、高阶函数

把函数作为参数传入,这样的函数称为高阶函数。高阶函数是函数式编程的体现。函数式编程就是指这种高度抽象的编程范式。

6.1 体验高阶函数

在python中,
abs() 函数用于计算绝对值。

abs(-10) # 10

round() 函数用于对数字进行四舍五入计算。

round(1.8)  #2

需求:⼀个函数完成计算任意两个数字的绝对值之和。
方法一:

def add_num(a, b):
 return abs(a) + abs(b)
 
result = add_num(-1, 2)
print(result) # 3

方法二:

def sum_num(a, b, f):
 return f(a) + f(b)
 # f是形参,用来传入任意函数
 
result = sum_num(-1, 2, abs)
print(result) # 3
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值