美文网首页
函数式编程

函数式编程

作者: Ji_uu | 来源:发表于2017-11-07 00:18 被阅读0次

    变量可以指向函数

    #函数的调用
    >>> abs(-5)
    5
    
    #直接写abs则返回函数对象
    >>> abs
    <built-in function abs>
    
    #定义一个变量f,把它指向abs,对f调用相当于对abs调用
    #说明变量可以指向函数
    >>> f = abs
    >>> f(-8)
    8
    

    函数名其实就是指向函数的变量

    #这里把abs指向另一个函数,则abs不再是求绝对值的函数了
    >>> abs = len
    >>> abs(-5)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: object of type 'int' has no len()
    #可以得到字符串的长度
    >>> abs('hehe')
    4
    #以上说明了函数名和普通的变量没有区别,它指向的只是一个函数对象
    

    高阶函数:能接收函数做参数的函数

    • 变量可以指向函数
    • 函数的参数可以接收变量
    • 一个函数可以接收另一个函数作为参数
    • 能接收函数作参数的函数就是高阶函数

    来看一个高阶函数的例子

    >>> def add(x, y, f):     #定义一个add函数
    ...     return f(x) + f(y)
    ...
    >>> add(-7, 9, abs)      #对函数进行调用
    16
    

    任务利用add(x,y,f)函数,计算:

    #答案
    import math
    
    def add(x, y, f):
        return f(x) + f(y)
    
    print add(25, 9, math.sqrt)
    

    map()函数

    python中reduce()函数

    python中的filter函数

    python中自定义排序函数

    python中返回函数

    python中闭包

    • 像这种内层函数引用了外层函数的变量(参数也算变量),然后返回内层函数的情况,称为闭包(Closure)。
    • 闭包的特点是返回的函数还引用了外层函数的局部变量,所以,要正确使用闭包,就要确保引用的局部变量在函数返回后不能变。

    python中匿名函数

    • 高阶函数可以接收函数做参数,有些时候,我们不需要显式地定义函数,直接传入匿名函数更方便。
    • 匿名函数有个限制,就是只能有一个表达式,不写return,返回值就是该表达式的结果。
    • 使用匿名函数,可以不必定义函数名,直接创建一个函数对象,很多时候可以简化代码

    Python中装饰器

    相关文章

      网友评论

          本文标题:函数式编程

          本文链接:https://www.haomeiwen.com/subject/wdermxtx.html