闭包的应用与理解

       普通函数能完成大功能编写,匿名函数能完成小功能代码编写,而且当作实参非常方便;而闭包比函数方便,拥有函数代码的功能(类似于匿名函数),还能有代码所需要使用数据;而面向对像,实例对象赋值给参数,里面的参数和方法都有,但应用中往往只要一部分,而不是全部,故闭包的优点就能体现出来,就是比面向对象更轻量,不会有多余的东西

def line(k,b):
    def create_y(x):
        print(k*x+b)
    return create_y


line_1 = line(1,2)
line_1(0)
line_1(1)
line_1(2)

line_1 = line(11,22)
line_1(0)
line_1(1)
line_1(2)

  输出内容以下:

2
3
4
22
33
44

代码说明:

1、line方法返回的是方法create_y的引用,并定义变更k=1,b=2,赋值给变量line_1

2、执行line_1(0)是,就相当于执行方法create_y,那0就为参数x的值

3、在create_y方法中,执行k*x+b,在当前方法找不到变量和k,b,因为当前函数是内部函数,就往外部函数找,即往上一层找,在方法line中找到k=1,b=2

4、再根据这三个参数的值计算返回值

闭包就是一个函数里面套着另一个函数的定义,一般情况内部函数的功能会用到外部函数的变量,把内部函数和用到的外部函数的变量整体称之为闭包

比面向对象实例所占的空间会更小,更方便

   



猜你喜欢

转载自www.cnblogs.com/lxhaaron/p/12671944.html