Python 函数相关

最后更新:
阅读次数:

高阶函数

一个函数中接收另一个函数作为参数,就称之为高阶函数。

  • map(function, Iterable):返回一个迭代器,每个迭代器的元素都是传入的可迭代对象的对应元素执行函数后的返回值。
l = [1,2,3,4,5]
def func(x):
return x*x

m = map(func, l)
list(m) => [1, 4, 9, 16, 25]
  • reduce(function, Iterable): ,返回累加后的值,类似 JavaScript 的累加器(这里它传入的函数接收两个参数)
# 将 [1,2,3,4,5] 变为 12345
from functools import reduce
l = [1,2,3,4,5]
def func(a,b):
return str(a)+str(b)

r = reduce(func, l)
r => '12345'
  • filter(function, iterable): 返回一个迭代器,元素由通过筛选函数的元素构成

这个函数的作用机理类似于:(item for item in iterable if function(item)) 生成器

# 筛选出奇数
l = [1,2,3,4,5]
def func(x):
return x % 2 != 0

r = filter(func, l)
list(r) => [1, 3, 5]
  • sorted(iterable[, key][, reverse]): 返回排序后的 Iterable 对象

    • key:应用指定后的函数后再排序
    • reverse:是否反向排序
l = [12, -2,-44,23,1,7]

s1 = sorted(l)
s1 => [-44, -2, 1, 7, 12, 23]

s2 = sorted(l, key=abs)
s2 => [1, -2, 7, 12, 23, -44]

s3 = sorted(l, key=abs, reverse=True)
s3 => [-44, 23, 12, 7, -2, 1]

装饰器(Decorator)

装饰器本质上是一种语法糖,是在调用函数时为函数添加一些额外的功能,比如显示当前调用的函数的名字等。

def log(func):
def wrapper():
print('当前调用函数 %s()' % func.__name__)
func()
return wrapper

@log # 装饰器
def f1():
print('我是 f1 函数~')

@log # 装饰器
def f2():
print('哥是 f2 函数~')

f1()
# 当前调用函数 f1()
# 我是 f1 函数~

暂不作深入了解,深入请看 PYTHON 修饰器的函数式编程