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 = [