📅  最后修改于: 2023-12-03 15:04:29.229000             🧑  作者: Mango
在Python中,可调用对象是指函数、方法、和可重载的对象(例如类或闭包)等,这些对象可以被调用执行。Python提供了很多高阶函数和操作,用于操作可调用对象,从而实现更加灵活的编程。
map函数的作用是对可迭代对象中的每个元素依次执行函数,并返回每次执行的结果组成的列表。它的语法如下:
map(func, *iterables)
其中,func
为执行的函数,*iterables
为可迭代对象。例如:
a = [1, 2, 3, 4, 5]
b = map(lambda x: x ** 2, a)
print(list(b)) # 输出 [1, 4, 9, 16, 25]
filter函数的作用是对可迭代对象中的每个元素依次执行函数,如果函数返回True,则保留该元素,否则排除该元素。它的语法如下:
filter(func, iterable)
其中,func
为执行的函数,iterable
为可迭代对象。例如:
a = [1, 2, 3, 4, 5]
b = filter(lambda x: x % 2 == 0, a)
print(list(b)) # 输出 [2, 4]
reduce函数的作用是对可迭代对象中的每个元素依次执行函数,将上一次的结果和当前元素作为参数传入函数中,最终返回一个值。它的语法如下:
reduce(func, iterable[, initial])
其中,func
为执行的函数,iterable
为可迭代对象,initial
为可选的初始值。例如:
from functools import reduce
a = [1, 2, 3, 4, 5]
b = reduce(lambda x, y: x+y, a)
print(b) # 输出 15
装饰器是一种特殊的函数,它可以用于修改其他函数的行为。Python中,通过将函数作为参数传入装饰器函数,从而实现对函数行为的修改。
例如,以下是一个简单的装饰器,它可以记录函数的执行时间:
import time
def time_it(func):
def wrapper(*args, **kwargs):
start = time.time()
result = func(*args, **kwargs)
end = time.time()
print(f'{func.__name__}执行时间:{end-start}s')
return result
return wrapper
# 执行函数
@time_it
def foo():
time.sleep(2)
foo() # 输出 foo执行时间:2.0014288425445557s
lambda表达式是一种匿名函数,它可以作为参数传递给其他函数。例如:
a = [1, 2, 3, 4, 5]
b = sorted(a, key=lambda x: x % 2)
print(b) # 输出 [2, 4, 1, 3, 5]
上述代码中,lambda表达式lambda x: x % 2
作为排序函数的参数,用于对列表a进行排序。
部分函数应用(Partial function application)指的是在函数原有的基础上,通过固定一部分参数来创建一个新的函数。Python中,可以使用偏函数(partial)实现部分函数应用。例如:
from functools import partial
def add(x, y):
return x + y
# 创建新函数
add2 = partial(add, 2)
print(add2(3)) # 输出 5
上述代码中,add2
是一个新函数,它固定了一个参数x
的值为2,从而创建一个新的函数,用于对参数y
进行操作。