一、递归函数
递归函数:就是在函数内部调用自身函数 注意点:一定要设置递归的临界点(终止递归的条件) 获取最大递归深度: res = sys.getrecursionlimit() 设置最大递归深度:sys.setrecursionlimit(400000) def mut(n): if n == 1: return 1 else: return mut(n - 1) * n
二、纯函数
概念:简单来说,一个函数的返回结果只依赖于它的参数,并且在执行过程里面没有副作用,我们就把这个函数叫做纯函数
3个原则:
1.变量都只在函数作用内获取,作为函数的参数传入
2.不会产生副作用,不会改变被传入的数据或者其他数据(全局变量)
3.相同的输入保证相同的输出
函数的副作用:调用函数会对当前的环境造成影响(修改当前环境中的数据)
三、匿名函数
语法:lambda 参数:返回值表达式 res = (lambda x,y:x+y)(11,22) 匿名函数结合 内置函数:filter一起使用 res = filter(lambda x: len(x) > 4, Names) 匿名函数结合推导式使用 li2 = [(lambda x: x/5)(i) for i in li]
四、python内置函数
all函数:判读可迭代对象中所有的数据都为真(布尔值为True) any函数:迭代对象内只要有一个元素为真,返回True locals函数:获取当前局部的作用域所有的变量,以字典形式进行输入 globals函数:获取当前作用域类的所有全局变量,以字典形式属性 map函数: 1.将函数应用于iterable中每一项并输出其结果的迭代器 2.自动将可迭代对象遍历,把遍历出来的数据,当成参数传入map第一个接口的函数中,将函数执行的结果,放到一个迭代器中进行返回 map(lambda x: x * 2, [1, 2, 3, 4, 5]) filter函数:过滤函数 zip函数:聚合打包
五、偏函数
偏函数:可以用来固定函数中的函数 from functools import partial res1 = filter(lambda x: x > 5, li1) res2 = filter(lambda x: x > 5, li2) res3 = filter(lambda x: x > 5, li3) filter2 = partial(filter,lambda x:x>5) print(list(filter2(li1))) print(list(filter2(li2))) print(list(filter2(li3)))