1.高阶函数的定义和特点
高阶函数是指能够接受函数作为参数和/或者返回函数作为结果的函数。Python中的函数是一等对象,即和其他对象一样具有变量、列表、字典、类等对象的基本属性,可以被传递、复制、作为参数传递、返回值、嵌套等等。
具有以下特点:
可以将函数本身作为一个参数传入另一个函数中进行使用
可以用来构造新的函数,所以可以看作返回函数的函数
2.map函数的使用
2.1 map函数的作用及原理
Python内置的map函数可以将一个函数应用于一个可迭代对象的所有元素上,并返回一个新的列表。
a = [1,2,3,4,5]
b = map(lambda x: x*2, a)
print(list(b))
输出:
[2,4,6,8,10]
2.2 map函数的应用场景
在数据处理中,经常需要将一种数据类型的集合转换为另一种类型的集合。如将一个列表中的数字都转换为字符串类型。
li = [1,2,3,4,5]
li_str = map(str, li)
print(list(li_str))
输出:
['1', '2', '3', '4', '5']
3.filter函数的使用
3.1 filter函数的作用及原理
Python内置的filter函数可以用于过滤序列,也就是筛选出符合条件的元素,并返回一个新的列表。
a = [1,2,3,4,5]
b = filter(lambda x: x%2==0, a)
print(list(b))
输出:
[2, 4]
3.2 filter函数的应用场景
可以用于过滤掉非真值元素,过滤掉字符串中的空字符串。
li = ['', 'one', 'two', '', 'three']
li_not_empty = filter(lambda x: bool(x), li)
print(list(li_not_empty))
输出:
['one', 'two', 'three']
4.reduce函数的使用
4.1 reduce函数的作用及原理
Python内置的reduce函数可以对一个序列进行递归操作,即先对一个序列的前两个元素进行操作,产生结果后再和第三个元素进行操作,直至序列只剩下最后一个元素。
from functools import reduce
a = [1,2,3,4,5]
b = reduce(lambda x,y: x*y, a)
print(b)
输出:
120
4.2 reduce函数的应用场景
可以用于求和、求积、字符串拼接等操作。
li = ['hello',' ','world']
result = reduce(lambda x,y: x+y, li)
print(result)
输出:
hello world
5.装饰器的使用
5.1 装饰器的作用及原理
装饰器可以用于在不改变原函数代码的情况下增加原函数的功能。
def function_name_decorator(func):
def wrapper():
print("在原函数执行前进行装饰")
func()
print("在原函数执行后进行装饰")
return wrapper
@function_name_decorator
def greet():
print("hello world!")
greet()
输出:
在原函数执行前进行装饰
hello world!
在原函数执行后进行装饰
5.2 装饰器的应用场景
可以用于统计函数执行的时间、检查函数输入合法性、缓存函数执行结果等。
6.闭包的使用
6.1 闭包的作用及原理
闭包是指一个函数可以访问并操作其外部作用域中的变量,即对其内部函数进行封装。闭包可以用于创建和集成函数,使得外界不能轻易地修改内部变量。
def outer_func(name):
def inner_func():
return "hello " + name
return inner_func
my_func = outer_func("world")
print(my_func())
输出:
hello world
6.2 闭包的应用场景
可以用于保存函数的状态,实现数据的封装保护,节省内存等。
7.总结
高阶函数、map函数、filter函数、reduce函数、装饰器和闭包是Python中重要且常用的概念,它们都是Python中函数式编程的精髓和高级特性。通过熟练掌握这些知识点,我们可以提高代码的可读性、可拓展性、复用性和维护性。