函数作为参数
最近在阅读他人代码时发现函数可以作为参数传递进另一函数。
有点绕,举个例子:
def apply(func, x):
"""将函数 func 应用于参数 x,返回结果"""
return func(x)
def double(x):
"""将参数 x 值乘以 2,返回结果"""
return x * 2
result = apply(double, 4)
print(result) # 输出 8
函数
apply
的参数分别为
func
和
x
,其中
func
是一个函数。
应用举例
回调函数:
-
回调函数是指将一个函数作为参数传递给另一个函数,在
特定事件发生时
调用该函数。
常见的应用场景是事件处理,例如点击按钮时执行某个操作。
映射函数:
-
映射函数是指将一个函数作用于一个序列中的每个元素,返回一个新的序列。
常见的映射函数有
map()
和
filter()
。def to_upper_case(s): """将字符串 s 转化为大写字母""" return s.upper() strings = ['hello', 'world', 'python'] # 这里传入了 to_upper_case 函数 upper_case_strings = list(map(to_upper_case, strings)) print(upper_case_strings) # 输出 ['HELLO', 'WORLD', 'PYTHON']
排序函数:
-
排序函数是指将一个函数作为参数传递给排序算法,用于自定义排序规则。
例如 Python 中的
sorted()
函数就可以接受一个 key 参数,该参数是一个函数,用于指定排序规则。
装饰器:
-
装饰器是一种高级技巧,可以将一个函数作为参数传递给另一个函数,并返回一个新的函数。
该技巧通常用于给函数增加额外的功能,例如计时、缓存、调试等等。
这种将函数作为参数传递的技术在函数式编程中非常常见,可以方便地实现一些通用的操作,如映射、筛选、归约等等。
总结
函数可以作为参数传递给其他函数,也可以从其他函数中返回。
版权声明:本文为D2Ooo原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。