Python-闭包

闭包

1.函数引用

def test():
    print("*"*30)
test()
aaa=test#引用函数
print("-"*40)
aaa()#通过引用调用函数
print(id(test))
print(id(aaa))

这里写图片描述

2. 闭包

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

def test(a,b):
    def line(x):
        return a*x+b
    return line

line1=test(1,1)
print(line1(5))
line2=test(2,3)
print(line2(4))

print(line1(5))#再次调用line1,并不需要传参a和b

这里写图片描述

这个例子中,函数line与变量a,b构成闭包。在创建闭包的时候,我们通过test的参数a,b说明了这两个变量的取值,这样,我们就确定了函数的最终形式(y = x + 1和y = 2x + 3)。我们只需要变换参数a,b,就可以获得不同的直线表达函数。由此,我们可以看到,闭包也具有提高代码可复用性的作用。

如果没有闭包,我们需要每次创建直线函数的时候同时说明a,b,x。这样,我们就需要更多的参数传递,也减少了代码的可移植性。

版权声明:本文为l2580258原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/l2580258/article/details/79771807