什么是高阶函数?
在Python中,高阶函数是指能够接受函数作为参数或返回函数作为结果的函数。
''' 0. 体验 ''' def sum_num(a, b, f): # 定义1个高阶函数:入参可接受一个函数f return f(a) + f(b) # 调用函数f result1 = sum_num(-1, 5, abs) # 把内置函数abs作为实参,传入sum_num print(result1) # 6 result2 = sum_num(1.1, 1.3, round) # 把内置函数round作为实参传入 print(result2) # 2
示例
''' 在Python中,高阶函数是指能够接受函数作为参数或返回函数作为结果的函数。 换句话说,高阶函数将函数作为一等公民对待,可以像其他数据类型一样进行传递和操作。 ''' ''' 1. 函数作为参数:高阶函数可以接受一个或多个函数作为参数,以便在函数体内部调用或处理这些函数。 例如,map()、filter()和sorted()函数都接受函数作为参数来操作列表的元素。 ''' # 1.1 定义函数 def square(x): return x ** 2 numbers = [1, 2, 3, 4, 5] # 1.2 使用高阶函数map,让square函数当实参,传入map函数 squared_numbers = map(square, numbers) # 使用map()将square函数应用于numbers列表中的每个元素 print(squared_numbers) # <map object at 0x000001F47B9D6E60> print(list(squared_numbers)) # [1, 4, 9, 16, 25] ''' 2. 函数作为返回值:高阶函数可以根据条件动态地返回一个函数。这样的函数被称为工厂函数或闭包函数。一个常见的例子是装饰器。 ''' def greet(): def say_hello(): return "Hello" return say_hello hello_func = greet() # 调用greet()函数返回say_hello函数 message = hello_func() # 调用hello_func函数 print(message) # Hello def make_counter(increment): count = 0 def counter(): # 多次调用就等价于在此处有一个for循环调用此函数 nonlocal count count += increment return count return counter # 返回是函数的引用,记住是引用, counter_1 = make_counter(1) # 创建一个增量为1的计数器函数 print(counter_1()) # 输出:1 print(counter_1()) # 输出:2 counter_1函数还没有死亡即它的栈还在,多次调用就等价于for循环 # 生成1个新的引用 counter_5 = make_counter(5) # 创建一个增量为5的计数器函数 print(counter_5()) # 输出:5 print(counter_5()) # 输出:10 ''' 3. Lambda函数(匿名函数):Lambda函数是一种特殊的函数形式,它可以在需要函数的地方快速定义简单的函数。 通常用于临时的、简单的功能需求,不需要为其定义一个独立的函数。常与高阶函数一起使用 ''' numbers = [1, 2, 3, 4, 5] # lambda x: x ** 2 整体作为一个匿名函数,作为实参传给map函数,此处map函数是高阶函数,对比示例1 squared_numbers = map(lambda x: x ** 2, numbers) # 使用lambda函数对numbers列表中的每个元素进行平方操作 print(list(squared_numbers)) # [1, 4, 9, 16, 25]
标签:map,函数,counter,numbers,print,高阶 From: https://www.cnblogs.com/allenxx/p/17538468.html