目录
一、递归函数
1.递归函数的特点
1)函数自己调用自己
2)必须有出口
2.练习
# 求第n个斐波那契数
# 1 1 2 3 5 8 13
# 解答
def Fibonacci(n):
if n == 1 or n == 2:
return 1
return Fibonacci(n-1)+Fibonacci(n-2)
二、lambda函数(匿名函数)
1.lambda的作用以及应用条件
作用:简单来说,lambda的存在大多是为了简化代码
应用条件:如果函数只要一个返回值并且只有一句代码,就可以使用lambda简化
2.lambda语法
lambda 参数列表: 表达式
# 计算a+b
# 1.函数实现
def add(a,b):
return a+b
result = add(1,2)
print(result)
# 2.lambda实现
fn1 = lambda a,b:a+b
print(fn1(1,2))
3.lambda的参数形式
1)无参数
fn1 = lambda:100
print(fn1())
2)有参数
i)一个参数
fn1 = lambda a:a
print(fn1('hello world'))
ii)默认参数
fn1 = lambda a, b, c=100: a + b + c
print(fn1(10,20))
iii)可变参数 *args
接收不定长的位置参数,返回值为元组
fn1 = lambda *args: args
print(fn1(10,20,30))
返回:(10,20,30)
iiii)可变参数 **kwargs
接收不定长的关键字参数,返回值为字典
fn1 = lambda **kwargs: kwargs
print(fn1(name='python',age=18))
返回:{name='python,age=18}
4.lambda的应用
1)带判断的lambda
fn1 = lambda a, b :a if a>b else b
print(fn1(1000,500))
2)列表数据按照字典的键值排序
students = [
{'name':'JRN','age':20},
{'name':'KEEN','age':18},
{'name':'Bay','age':21}]
# 按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)