匿名函数
作用:简化函数的定义
def func(a, b):
c = a + b
print(c)
return c
-
格式:
- 关键字 lambda
lambda 参数1, 参数2: 函数体
-
如何调用:
s = lambda
s = lambda a, b: a + b
print(s) # s 是个函数
- 如何判断 有无返回呢
只要运算 就返回
匿名函数 作为 参数出现
def func(x, y, f):
print(x,y)
f(x,y)
func(1, 2, lambda a, b: a + b)
匿名函数 与 内置函数
lt1 = [1, 2, 3, 4, 9]
print(max(lt1)) # max可以传入 列表
lt2 = [{'a': 10, 'b': 11}, {'a': 20, 'b': 21}, {'a': 30, 'b': 31}, {'a': 40, 'b': 41}, ]
# print(max(lt2))
# max(iterable, *[, default=obj, key=func]) -> value
m = max(lt2, key=lambda x: x['a'])
print(m)
上面代码,max()可以传入列表,求其最大值
但是传入的 列表包含 字典,如何求 字典 key=‘a’,的最大值呢
因此 lambda 用在传入参数为func 的位置
其他 内置函数
- map()
map(func, *iterables) --> map object
Make an iterator that computes the function using arguments from
each of the iterables.
Stops when the shortest iterable is exhausted. - reduce()
- filter()
- sorted()
lt1 = [1, 2, 3, 4, 9]
res = map(lambda x: x * 2, lt1)
print(res)
print(list(res))
map(lambda x: x if x % 2 == 0 else x + 1, lt1)
from functools import reduce
reduce(lambda x, y: x + y, lt1)
filter(lambda x: x > 3, lt1)
filter(lambda x:x['xx'], dict)
sorted(dict, key=lambda x:x['xx'])
递归函数
函数自己 调用自己
- 特点:
- 调用 自身
- 设定终点,判断结束
- 设定起点,传入参数
def sum(n):
if n == 0:
return 0
else:
return n + sum(n - 1)
re = sum(10)
print(re)
def p(n):
if n == 0:
print(n)
else:
print(n)
p(n-1)
p(5)