廖雪峰python学习笔记之函数式编程

什么是函数式编程呢?一定要和函数区分开,函数式编程允许把函数本身作为一个参数传入到另一个函数,并允许返回一个函数

偏函数(Partial Function)

functions.partial作用:
把一个函数的某些参数固定住(即设为默认值,返回一个新函数)
栗子:

>>> import functools
>>> int2 = functools.partial(int, base=2)
>>> int2('1000000')
64

装饰器(懂些皮毛,看这两个博文)

定义:在代码运行期间动态增加功能的方式(换成白话:不修改原来代码的前提下,给函数增加新的功能)
本质:返回一个函数的高阶函数
python装饰器详解
python装饰器–原来如此简单

匿名函数(学会使用哦)

  1. 匿名函数也是一个函数对象,可以将其赋值给一个变量,然后通过变量调用该函数
  2. 也可以将匿名函数作为函数值返回
def build(x,y):
    return lambda x*x+y*y

返回函数(主要是闭包这个东西)

何为闭包

如果在一个函数的内部定义了另一个函数,外部的我们叫他外函数,内部的我们叫他内函数。
在一个外函数中定义了一个内函数,内函数里运用了外函数的临时变量,并且外函数的返回值是内函数的引用。这样就构成了一个闭包。

实例

#闭包函数的实例
# outer是外部函数 a和b都是外函数的临时变量
def outer( a ):
    b = 10
    # inner是内函数
    def inner():
        #在内函数中 用到了外函数的临时变量
        print(a+b)
    # 外函数的返回值是内函数的引用
    return inner

if __name__ == '__main__':
    # 在这里我们调用外函数传入参数5
    #此时外函数两个临时变量 a是5 b是10 ,并创建了内函数,然后把内函数的引用返回存给了demo
    # 外函数结束的时候发现内部函数将会用到自己的临时变量,这两个临时变量就不会释放,会绑定给这个内部函数
    demo = outer(5)
    # 我们调用内部函数,看一看内部函数是不是能使用外部函数的临时变量
    # demo存了外函数的返回值,也就是inner函数的引用,这里相当于执行inner函数
    demo() # 15

    demo2 = outer(7)
    demo2()#17

注意:返回函数不要引用任何循环变量或者后续会发生变化的变量

高阶函数

何为高阶函数:一个函数可以接受另一个函数作为参数

map

map将传入的函数依次作用于序列的每个元素,并把结果作为新的Iterator返回

map(函数,Iterable)

reduce

将函数作用在序列上,reduce把结果继续和序列的下一个元素做求和运算

reduce(函数,[x1,x2,x3...])

filter

用于过滤序列,filter()把传入的函数依次作用于每个元素,然后根据返回值True还是False决定保留还是丢弃该元素

filter(函数,序列)

sorted

对list进行排序,通过key关键字可实现自定义排序,比如:
key = abs
key = str.lower
reverse = True

猜你喜欢

转载自blog.csdn.net/alicelmx/article/details/80328209
今日推荐