python 中的 闭包 与 函数的区别

版权声明:转载请标明出处 https://blog.csdn.net/gymaisyl/article/details/83019368

定义:(重点在定义)

在外部函数里面定义一个内部函数,并且这个内部函数用到了外部函数的变量,那么将这个内部函数和用到的一些变量统称为闭包。

首先看一个闭包的实例:

def lines(a, b):
    def line(x):
        return a * x + b
    return line
    
line1 = lines(1, 1)  # 可以得到 直线1:y=x+1
line2 = lines(4, 5)  # 可以得到 直线2:y=4x+5
print(line1(5))
print(line2(5))

我们只需要变换参数a,b,就可以获得不同的直线表达函数;通过这个闭包的实例,可以看出,闭包的一个好处是,提高代码的复用率。

修改外部函数中的变量:

def outer(num1):
    def inner():
        # nonlocal是闭包内部变量的声明:声明变量不是局部变量,这样下方的代码可以对外部函数传入的变量进行修改
        nonlocal num1 
        num1 += 1
        return num1
    return inner
    
ret = outer(100)  # 得到内部函数inner的指向
print(ret())  # 调用inner函数,并打印inner函数的返回值 结果为101

闭包和函数的区别:

  • 闭包:在闭包中,既有函数,又有数据,而且数据是闭包里面独有的数据,与外界无影响;

  • 函数:函数中,需要使用的全局变量,在一定程度上是受到限制的,因为全局变量不仅仅是一个函数使用,其他的函数也可能会使用到,一旦修改会影响到其他函数使用全局变量,所以全局变量不能随便修改从而在函数的使用中受到一定局限性。

猜你喜欢

转载自blog.csdn.net/gymaisyl/article/details/83019368