• Python3-高阶函数、闭包


    一、高阶函数

     

    满足下列条件之一为高阶函数

    1.某一函数当作参数传入另一个函数中

    2.函数的返回值包含n个函数,n>0

    高阶函数示范:

    def bar():
        print 'in the bar'
    def foo(func):
        res=func()
        return res
    foo(bar)

    高阶函数的牛逼之处:

    def foo(func):
        return func
     
    print 'Function body is %s' %(foo(bar))
    print 'Function name is %s' %(foo(bar).func_name)
    foo(bar)()
    #foo(bar)() 等同于bar=foo(bar)然后bar()
    bar=foo(bar)
    bar()

    .闭包

    闭包

    1.闭 函数里面还嵌套了函数

    2.包 包含了对外部函数作用域中变量的引用

    内部函数包含对外部作用域而非全局作用域名字的引用,该内部函数成为闭包函数。

    闭包的作用:

    就是能够引用外部函数的变量,并且可以保证外部函数的变量控制在一个局部作用域中。

    #闭包的常用形式
    def hei():
        x = 20
        def inner():
            print(x)  #局部的
        return inner
    
    # i = hei()
    # i()  #全局

    判断闭包函数的方法__closure__

    #输出的__closure__有cell元素 :是闭包函数
    def func():
        name = 'eva'
        def inner():
            print(name)
        print(inner.__closure__)
        return inner
    
    f = func()
    f()
    
    #输出的__closure__为None :不是闭包函数
    name = 'egon'
    def func2():
        def inner():
            print(name)
        print(inner.__closure__)
        return inner
    
    f2 = func2()
    f2()
  • 相关阅读:
    mongodb分片
    mongodb副本集搭建
    mongodb数据导入导出
    mongodb安装、配置
    redis副本集
    redis安装,第一天
    redis常用命令
    mac中安装 RabbitMQ
    Vue常用模块
    nodejs,koa2常用模块
  • 原文地址:https://www.cnblogs.com/Xuuuuuu/p/10172725.html
Copyright © 2020-2023  润新知