zoukankan      html  css  js  c++  java
  • python-高阶函数和闭包

    高阶函数:把函数作为参数传入,这样的函数成为高阶函数。

    高阶函数,higher-order function

    Abs()内置函数:绝对值

    函数名是什么:指向函数的变量

    传入函数

    一个函数的参数是否可以接受另外一个函数作为参数,这种函数就叫做高阶函数。

    最简单高阶函数实例:

    def func(x,y,z):

    return z(x)+z(y)#abs(x)+abs(y)

    print(func(-4,6,abs))

     

    返回函数

    高阶函数除了可以接受函数作为参数外,还可以吧函数作为值返回

    Def sum(args):

    Ax = 0

    For var in args:

        Ax+=var

    Return ax

    _______________________________________________________________

    def func(*args):

    def sum():

    ax = 0

    for n in args:

    ax+=n

    return ax

    return sum

     

    a = func(1,2,3,4,5)

    print(a())

    内部函数可以引用外部函数的参数和局部变量,当外部函数返回内部函数时,相关参数和变量都保存在返回的函数当中,这就是闭包

    def func(*args):

    def sum():

    ax = 0

    for n in args:

    ax+=n

    return ax

    return sum

     

    a = func(1,2,3,4,5)

    a1 = func(1,2,3,4,5)

    print(a()==a1())

    注意:当调用func函数时,每次调用都会返回一个新的函数,即使传入的参数相同

     

    闭包:

    def count():

    fs=[]

    for i in range(1,4):

    def f():

    return i*i

    fs.append(f)

    return fs

    f1,f2,f3 = count()

    print(f1())

    print(f2())

    print(f3())

     

    牢记:返回函数不要引用任何循环变量,或者后面会发生改变的变量

    def count():

    def f(j):

    def g():

    return j*j

    return g

    fs=[]

    for i in range(1,4):

    fs.append(f(i))#立刻被执行,所以i的当前值被传入f()

    return fs

    f1,f2,f3 = count()

    print(f1())

    print(f2())

    print(f3())

     

  • 相关阅读:
    shell的一本书
    linux设置网络三种方法
    BIOS讲解
    对于ssh和hadoop联系讲解和ssh的基本内容
    Httphandler
    ASP.NET配置文件
    Httpmoudle
    ASP.NET页面生命周期
    ASP.NET页面跳转方法的集合
    OutputCache的使用
  • 原文地址:https://www.cnblogs.com/askDing/p/8530009.html
Copyright © 2011-2022 走看看