day11 匿名函数与实参高阶函数

1.匿名函数 - 没有函数名的函数

"""
函数名 = lambda 形参列表:返回值
相当于:
def (形参列表):
return 返回值
注意:匿名函数的本质还是函数,之前函数中除了定义函数的语法以外的内容都适用于匿名函数
“”"

求两个数和的匿名函数

sum1 = lambda num1, num2: print(num1 + num2)
sum1(10, 20)

写一个匿名函数判断指定的年是否是闰年

leap_year = lambda year: year % 400 == 0 or (year % 4 == 0 and year % 100 != 0)
if leap_year(2001):
    print('是闰年')
else:
    print('不是闰年')
sum1 = lambda num1, *num2: print(num1 , num2)
sum1(1, 2, 3)   # 1 (2, 3)

1.函数就是变量

"""
python中定义函数就是定义类型是function的变量,函数名就是变量名
普通变量能做的事情,函数都能做
“”"

x = lambda num: num*2
print(type(x))  # <class 'function'>
print(x(3))     # 6

a = x
print(x(1))     # 2
print(a(2))     # 4

func3是一个实参高阶函数 - 如果一个函数的参数是函数,那么这个函数就是实参高阶函数

def func3(x, y, z, m):
    # x是长度大于等于2的有序序列
    print(x[1])
    # y可以是任何类型的数据
    print(y)
    # z是字典
    print(z['a'])
    # m是一个函数
    print(m())

def t1():
    print('x')

func3('abc', 100, {
   'a': 100}, t1)
func3('abc', 100, {
   'a': 100}, lambda i=10: i*2)

func4是返回值高阶函数 - 如果一个函数的返回值是函数,那么这个函数就是返回值高阶函数

def func4():
    def t2(x):
        print(x)
    return t2

result = func4()(1)     # 1
print('===:', result)   # ===: None
list3 = []
for x in range(5):
    list3.append(lambda i: x*i)
"""
x = 0 : [lambda i: x*i]
x = 1 : [lambda i: x*i, lambda i: x*i]
x = 2 : [lambda i: x*i, lambda i: x*i, lambda i: x*i]
x = 3 : [lambda i: x*i, lambda i: x*i, lambda i: x*i, lambda i: x*i]
x = 4 : [lambda i: x*i, lambda i: x*i, lambda i: x*i, lambda i: x*i, lambda i: x*i]
list3 = [lambda i: 4*i, lambda i: 4*i, lambda i: 4*i, lambda i: 4*i, lambda i: 4*i]
"""
print(list3[0](2))  # lambda i: 4*i
print(list3[1](2))  # lambda i: x*i
print(list3[2](2))  # lambda i: x*i

1.python中常用的实参高阶函数:max、min、sorted、map、reduce

1)max和min

"""
max(序列,key=函数) - 按照key对应的函数指定的规则来获取序列中元素最大的值
函数的要求:1)有且只有一个参数(这个参数指向的是序列中的元素)
2)有一个返回值(比较大小的对象)

sorted(序列,key=函数)
函数的要求:1)有且只有一个参数(这个参数指向的是序列中的元素)
2)有一个返回值(比较大小的对象)
“”"

示例1:获取nums中个位数最大的元素

nums = [29, 80, 7, 56, 23]
# def temp(item):
#     return item % 10
# result = max(nums, key=temp)

# 优化写法
result = max(nums, key=lambda item: item % 10)
print(result)   # 29
result = max(nums, key=lambda item: item)
print(result)   # 80 不写Key默认是本来的元素

示例:获取tel中尾号最大的元素

tels = [
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值