美文网首页
python——闭包

python——闭包

作者: ELLENXX | 来源:发表于2019-07-15 16:42 被阅读0次
def fnx(x):
    def fny(y):
        return x*y
    return fny
i=fnx(3)
print(i)

输出:<function fnx.<locals>.fny at 0x000002B19A2E77B8>

i=fnx(3),fnx(3)的返回值就是一个函数fny,也就是i指向了内部函数fny

上面的代码特征:在一个外部函数中定义了一个内函数,内部函数里运用了外部函数的临时变量,并且外函数的返回值是内函数的引用。这是一个闭包。

当函数执行结束后,会把自己的函数内定义的变量都释放还给内存,之后变量会被请款,但如果是闭包,外部函数执行时,自己的变量会在将来的内部函数中用到,自己在结束的时候,返回内函数的同时,会把外函数的临时变量送给内函数绑定在一起。所以外函数已经结束了,调用内函数的时候仍然能够使用外函数的临时变量。

def fnx(x):
    def fny(y):
        return x*y
    return fny
i=fnx(3)
print(i(4))

输出:12

如果想要在内部函数中改外部函数的值,可以将外部函数的临时变量变成可修改变量

def fnp():
    p=[2]
    def fnq():
        p[0]*=p[0]
        return p[0]
    return fnq
print(fnp()())

输出:4

还可以使用nonlocal

def fnp():
    p=3
    def fnq():
        nonlocal p
        p*=p
        return p
    return fnq
print(fnp()())

输出:9

相关文章

  • python闭包学习

    参考文章 python闭包python闭包一步一步教你认识Python闭包深入浅出python闭包

  • python函数之闭包

    目录 python函数之闭包什么是闭包python中的namespace闭包的条件闭包的优点 python函数之闭...

  • Python 闭包使用注意点

    1 Python 闭包 今天,聊下 python 的闭包。在函数编程中经常用到闭包。 闭包是什么,它是怎么产生的及...

  • python高级之闭包

    python高级之闭包 什么是闭包? 闭包(closure)是函数式编程的重要的语法结构。闭包也是一种组织代码的结...

  • Python 中的闭包

    Python 中的闭包:+ http://python.jobbole.com/82296/

  • python之理解闭包和装饰器

    python之理解闭包和装饰器 1、闭包函数 1.1 python中函数都是对象 结果: 上面定义一个shut函数...

  • 闭包

    浅谈 python 的闭包思想 首先 python的闭包使用方法是:在方法A内添加方法B,然后return 方法B...

  • 2018-11-20

    python函数的闭包 闭包: 嵌套函数调用外部函数的变量 注意: 闭包必须是内部函数调用外部函数定义的变量,这其...

  • Python 入门之 闭包

    Python 入门之 闭包 1、闭包 (1)在嵌套函数内使用(非本层变量)和非全局变量就是闭包 (2)_ clos...

  • Python装饰器(Decorator)完全指南-基础篇

    Decorator基本指南 前提知识 Python中的闭包(closure) 所谓闭包,指的是附带数据的函数对象。...

网友评论

      本文标题:python——闭包

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