[ Python ] 匿名函数和高阶函数

1. 匿名函数

lambda:一个语法,三个特性,四个用法html

语法:
 lambda argument_list: expression
argument_list 和 expression 由用户自定义python

 

(1)argument_list 是参数列表。它的结构与 python 中函数的参数列表是同样的。express

a, b
	a=1, b=2
	*args
	**kwargs
	a, b=1, *args
	空
	……

 

(2)expression 是一个关于参数的表达式。表达式中出现的参数须要在 argument_list 中定义,而且表达式只能是单行的,以下:编程

1
	None
	a + b 
	sum(a)
	1 if a > 10 else 0

 

lambda argument_list: expression 表示的是一个函数,一个匿名函数。函数式编程

三个特性:
    (1)lambda 函数是匿名的;所谓匿名函数,通俗地说就是没有名字的函数。lambda 函数没有名字;
    (2)lambda 函数有输入和输出;输入是传入到参数列表 argument_list 的值,输出是根据表达式 expression 计算获得的值;
    (3)lambda 函数通常功能简单,单行 expression 决定了 lambda 函数不可能完成复杂的逻辑,只能完成很是简单的功能函数

 

四个用法:
    (1)将 lambda 函数赋值给一个变量,经过这个变量间接调用该 lambda 函数
    (2)将 lambda 函数做为其余函数的返回值,返回给调用者
    (3)将 lambda 函数做为参数传递给其余函数
    (4)将lambda 函数赋值给其余函数,从而将其余函数用该 lambda 函数替换spa

 

python编程方式
    python 编程方式分为:
        (1)面向过程
        (2)函数式编程
            不用变量保存状态,不修改变量
            函数即变量
        (3)面向对象code

 

2. 高阶函数

    (1)函数接收参数是一个函数名
    (2)返回值中包含函数
    把函数做为参数传入,这样的函数称为高阶函数htm

 

(1)map对象

map函数接收两个参数,一个是函数,一个是 iterable。map将传入的函数依次做用到每一个元素,并把结果做为新的 iterator 返回

def f(x):
        return x * x


m = map(f, [1, 2, 3, 4])
# iterator 是惰性序列,所以经过 list() 函数让它把整个序列都计算出来并返回一个list
print(list(m))

# 执行结果:
# [1, 4, 9, 16]

 

(2)filter
filter接收一个函数和一个序列。filter() 把传入的函数依次做用于每一个元素,而后根据返回值是 True 和 False 决定保留仍是丢弃该元素。

def is_odd(n):
        return n % 2 == 1

# f = filter(is_odd, [1,2,3,4,5,6,7]) 
# 等价于
f = filter(lambda n: n % 2 == 1, [1,2,3,4,5,6,7])
print(list(f))

# 执行结果:
# [1, 3, 5, 7]

 

(3)reduce
reduce 把一个函数做用于一个序列上,这个函数必须接收两个参数,reduce把结果继续和下一个元素作累计计算

from functools import reduce
def foo(x, y):
        return x + y

# r = reduce(foo, [1,2,3,4])
# 等价于:
r = reduce(lambda x, y: x + y, [1,2,3,4])
print(r)

 

3. python 内置函数

  python 内置函数用法。

相关文章
相关标签/搜索