一:匿名函数
1.匿名函数有关键字 lambda 修饰;
2.匿名函数冒号 : 之前的是函数的参数,匿名函数可以是无参匿名函数,也可以是带参匿名函数;
3.匿名函数冒号 : 之后是表达式,匿名函数不需要写 return,表达式的结果就是返回值;
4.假如有这样一个需求:传入一个字符串,对字符串根据空格拆分,并以字符串的形式返回拆分后的结果,示例代码如下:
str1 = "laowang is sing_dog "
#普通函数
def get_str(str1):
# 1.将字符串拆分为列表
list1 = str1.split(" ")
# 2.将列表转为字符串并返回字符串
return “”.join(list1)
# 将1/2两步合并为一步完成
# return "".join(str1.split(" "))
print(“打印原始字符串:”,str1)
print(“调用普通函数获取字符串拆分结果:”,get_str(str1))
#匿名函数
f0 = lambda a:"".join(a.split(" "))
print(“调用匿名函数获取字符串拆分结果:”,f0(str1))
二:递归函数
递归的特性:
1、递归函数必须有一个明确的结束条件。
2、每进入更深一层的递归时,问题规模相对于上一次递归都应减少
3、相邻两次重复之间有紧密的联系,前一次要为后一次做准备(通常前一次的输出就作为后一次的输入)。
4、递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出)
5:使用方法
import sys
#通过循环来实现叠加
def sum1(n):
‘’’
1 to n,The sum function
‘’’
sum = 0
for i in range(1,n + 1):
sum += i
return sum
#通过函数的递归来实现叠加
def sum2(n):
‘’’
1 to n,The sum function
‘’’
if n > 0:
return n + sum_recu(n - 1) #调用函数自身
else:
return 0
print(“循环叠加–>”,sum1(100))
print(“递归叠加–>”,sum2(100))
#两者实现的效果均是:5050