美文网首页
python闭包

python闭包

作者: 壁花烧年 | 来源:发表于2017-06-10 16:09 被阅读0次

在函数内部再定义一个函数,并且这个函数用到了外边函数的变量,那么将这个函数以及用到的一些变量称之为闭包。在了解闭包之前,先了解一下函数的引用。

def test():
    print('...test...')

test()
t1 = test
t1()
print(id(test))
print(id(t1))

print('*'*15)

结果如下:


函数的引用.jpg

那闭包是如何在函数内引用函数的?看如下代码:

def test(number):
    def test_in(number_in):
        print('test_in的number_in是:%s'%number_in)
        return number+number_in
    return test_in


t1 = test(10)
print(t1(20))
print(t1(30))

结果如下:


闭包.jpg

接下来看一个闭包的实际例子,定义一个函数曲线,给定x的值求y的值。

def fun1(k,b):
    def fun1_in(x):
        print('x的值是:%s'%x)
        return k*x+b
    return fun1_in

f1 = fun1(2,1)
print(f1(3))

结果如下:


闭包实例.jpg

这个例子中,函数fun1与变量k,b构成闭包。在创建闭包的时候,我们通过fun1的参数k,b说明了这两个变量的取值,这样,我们就确定了函数的最终形式(y=kx+b)。我们只需要变换参数a,b,就可以获得不同的直线表达函数。由此,我们可以看到,闭包也具有提高代码可复用性的作用。
如果没有闭包,我们需要每次创建直线函数的时候同时说明k,b,x。这样,我们就需要更多的参数传递,也减少了代码的可移植性。
闭包似优化了变量,原来需要类对象完成的工作,闭包也可以完成。
但由于闭包引用了外部函数的局部变量,则外部函数的局部变量没有及时释放,消耗内存。

相关文章

  • 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/zotcqxtx.html