测试开发---函数
(1)递归函数:调用自身
import sys sys.setrecursionlimit(5000) # 修改递归最大次数,默认1000次 # 特点:消耗内存严重
(2)纯函数:返回值只由传入参数决定
I.纯函数的3个原则
-
-
不会产生副作用(side effects),不会改变被传入的数据或其他数据(全局变量)
-
相同的输入保证相同的输出
def fun(a,b): return a+b # 定义 func = lambda a,b:a+b # 调用 res = func(11,22) # 33 print(res) # 即定义即调用 (lambda a,b:a+b)(11,22) # 快速过滤 li = [1,2,122,132,11,22,12,33,4,65,7] res1 = filter(lambda x:x<10,li) print(list(res1)) # [1, 2, 4, 7] # 三步运算符 a =100 print(100) if a>100 else print(22)
(4)内置函数
-
-
filter函数:用于过滤序列(将可迭代对象中的数据迭代出来,一个一个传入到函数中,过滤掉不符合要求的数据,将返回结果放到新的对象中)
-
from functools import partial # 偏函数 # 过滤掉小于5的数据 nfilter = partial(filter,lambda x:x>5) li1 = [1,2,3,11,22,33,4,5,6,7,2,88,31,23,122,331] res1 = nfilter(li1) print(list(res1)) # [11, 22, 33, 6, 7, 88, 31, 23, 122, 331] li2 = [1,2,3,11,22,33] res2 = nfilter(li2) print(list(res2)) # [11, 22, 33]
(6)闭包(实现数据的锁定,提高稳定性)
闭包满足的条件:函数中嵌套函数,外层函数返回内层嵌套函数名,内层嵌套函数有引用外层的一个非全局变量
a = 100 def fun(num,b): # num = 100 def count_book(): print(num) print(b) print('这是计算买书方式的函数') return count_book res = fun([1,2,3],'python') # (<cell at 0x00EFE4D8: str object at 0x01044960>, <cell at 0x00F32E20: list object at 0x00F1A8C8>) print(res.__closure__) # 存放非全局变量