美文网首页
Python入门与进阶(11-10)

Python入门与进阶(11-10)

作者: buaishengqi | 来源:发表于2018-05-14 14:54 被阅读5次

    11-10 什么是闭包

    # 11-10 什么是闭包
    def curve_pre():#抛物线函数
        def curve():
            pass
    
    curve()#这时候调用curve不可以,因为它在函数里面,属于内部函数
    
    # 打印结果如图1
    
    
    def curve_pre():
        def curve():
            print('this is a function')
            pass
        return curve #这个肯定可以返回,函数作为一个返回结果,被另一个函数给返回回来的
    
    f = curve_pre()#可以把函数赋值给另外一个变量!!
    f()
    
    # 打印结果如图2
    
    
    def curve_pre():
        a = 25
        def curve(x):
            return a*x*x
        return curve #这个肯定可以返回,函数作为一个返回结果,被另一个函数给返回回来的
    
    f = curve_pre()#可以把函数赋值给另外一个变量!!
    print(f(2))
    
    # 打印结果如图3
    
    
    # 看看下面的执行结果,结果是多少?
    def curve_pre():
        a = 25
        def curve(x):
            return a*x*x
        return curve 
    a = 10
    f = curve_pre()#
    print(f.__closure__)#闭包的结果存放的地方
    print(f.__closure__[0].cell_contents)
    
    # 此时f(2) = curve_pre()
    print(f(2))
    
    # 打印结果如图4,为什么结果是100不是40?
    # 闭包 = 函数+环境变量
    
    
    # 闭包和全局变量是有区别的!!
    a = 25   #全局变量
    def curve_pre():
        def curve(x):
            return a*x*x
        return curve 
    a = 10
    f = curve_pre()#可以把函数赋值给另外一个变量!!
    # 此时f(2) = curve_pre()
    print(f(2))
    # 打印结果如图5
    
    1.jpg 2.jpg 3.jpg 4.jpg 5.jpg

    相关文章

      网友评论

          本文标题:Python入门与进阶(11-10)

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