📜  python中可调用对象的高阶函数和操作(1)

📅  最后修改于: 2023-12-03 15:04:29.229000             🧑  作者: Mango

Python中可调用对象的高阶函数和操作

在Python中,可调用对象是指函数、方法、和可重载的对象(例如类或闭包)等,这些对象可以被调用执行。Python提供了很多高阶函数和操作,用于操作可调用对象,从而实现更加灵活的编程。

一、高阶函数
1. map函数

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]
2. filter函数

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]
3. reduce函数

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
二、操作
1. 装饰器

装饰器是一种特殊的函数,它可以用于修改其他函数的行为。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
2. lambda表达式

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进行排序。

3. 部分函数应用

部分函数应用(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进行操作。