【Python函数】闭包函数

  • 定义:

    • 函数内部定义另外一个函数并且该内部函数可访问和修改外部变量的值

  • 原理:

    • 外部函数执行完后,有变量被内部函数使用则会将该变量绑定到内部变量后,再释放内存
  • 语法

    • 
      def outer_function():
      
          def inner_function():
      
              return 语句
      
          return inner_function
      
      
      
      r = outer_function()  # r指向的是函数inner_function的地址
      
      r1 = r()  # 调用inner_function函数,得到返回值
  • 内部函数访问和修改外部变量的值

    • 访问
    • def adder(x):
      
          def wrapper(y):
      
              return x + y
      
          return wrapper
      
      
      adder5 = adder(5)
      
      print(adder5(6))  # 12
      
    • 修改
      • 外部函数的变量是不可变数据类型,使用nonlocal声明
    • 
         def outer_function():
      
              a = 10
      
              def inner_function():
      
                  nonlocal a
      
                  a = 11
          
                  return a*2
              return inner_function
      
      
      r = outer_function()
      r1 = r() 
      print(r1)  # 22
      
      
      
    • 外部函数的变量是可变数据类型
      • def outer_function(start):
            a = [start]
            def inner_function():
                a[0] = a[0] +1
                return a[0]
            return inner_function
        
        r = outer_function(5)
        print(r(),r()) # 6,7

你可能感兴趣的:(Python,python,开发语言)