最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

环球微动态丨python中的高阶函数

来源:博客园


(资料图)

1.匿名函数

# lambda表达式# 匿名函数# 没有名字的函数 相当于# 优点:节省内存空间 优化代码# def add(a, b):#     return a+bdef add(a, b): return a + b# 当函数里面的代码只有一行的时候可以这样写!print(add(1, 2))# 但函数里面的代码只有一行,可以转换为匿名函数..# lambda 传入的参数: 返回的数据# (lambda a, b: a+b)(lambda a, b: a + b)(1, 2)  # 只使用一次  调用匿名函数,在后面加括号和参数add1 = (lambda a, b: a + b)  # 定义名字,可重复使用print(add1(1, 2))print(add1(2, 6))# 实践中一般只使用一次,不需要考虑函数的名字,只需要完成功能

2.递归

# 递归特点:# 1.函数内部自己调用自己# 2.必须要有出口# 有规律的循环(线性循环)# 打印 1 ~ 9def func(start, stop, step=1):  # 默认参数    print(start)    if start == stop:  # 结束 递归的出口        return  # 作用只是结束函数运行,停止递归  默认是None  空    func(start + step, stop, step)func(1, 9)  # range(1, 10, 1)
# 无规律循环(非线性循环)list_data = [1, [2, 3, [4, 5, 6, [7, 8, 9, [0]]]]]# 按照顺序打印1,2,3,4,5,6,7,8,9,0# 如何判断i是否属于某个类型# isinstance(要判断的变量, 要判断的类型)# print(isinstance([1, 2], list))  # [1, 2]是list类型,返回True# print(isinstance([1, 2], str))  # [1, 2]不是str类型,返回False# for i in list_data:#     if type(i) == list:  # 也可以这样#         for j in i:#             ...  # 一直嵌套#     else:#         print(i)def func(data):    # if type(data) == list:    if isinstance(data, list):        for i in data:  # 是列表,则更深一层            func(i)    else:        print(data)  # 不是列表,打印func(list_data)

3.高阶函数

# 高阶函数 函数里面调用另一个函数
# reduce 减from functools import reduce  # from 从什么地方 import 导入什么东西list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]print(reduce(lambda a, b: a + b, list1))# 1+2=3,3+3=6,6+4=10...list3 = [[1, 2], [3, 4], [5, 6]]# 2+4+6=12def aa(a, b):    if type(a) == list:        return a[1] + b[1]    else:        return a + b[1]print(reduce(aa, list3))  # 12
# map 映射# map自带for循环# map(一个函数名, 一个数据)list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]print(map(lambda i: str(i), list1))  # 生成器对象print(list(map(lambda i: str(i), list1)))  # 强转为listdef int_to_list(data):    return str(data)print(list(map(int_to_list, list1)))  # 注意这里int_to_str只写了函数名,不是函数调用

今日作业

# 5!# 5的阶乘def func(data):    # print(data)    if data == 1:  # 出口        return 1    return data*func(data-1)print(func(5))

关键词: 匿名函数 函数调用 可重复使用