zoukankan      html  css  js  c++  java
  • 闭包

    闭包

    • 闭包形成条件
    1. 函数嵌套
    2. 内层有数据被外部引用
    • 应用场景:

      • 装饰器/SQLAIchemy源码
    • 函数可以作为变量

    • 函数可以作为参数

    • 函数可以作为返回值

      def bar():
          def inner():
              print(123)
          return inner
      v = bar()
      v()
      
    • 闭包:为一个函数创建一块区域(内部变量供自己使用),为他以后执行提供数据

      # 基本格式
      def func(name):
          def inner():
              print(name)
      	return inner 
      
      v1 = func('alex')
      v1()
      v2 = func('eric')
      v2()
      
      #练习
      # 第一题
      name = 'alex'
      def base():
          print(name)
      
      def func():
       	name = 'eric'
          base()
      
      func() # {name=eric, }
          
      
      # 第二题
      name = 'alex'
      
      def func():
       	name = 'eric'
          def base():
          	print(name)
          base()
      func()
      
      # 第三题
      name = 'alex'
      
      def func():
       	name = 'eric'
          def base():
          	print(name)
          return base 
      base = func()
      base()
      
      

    经典例题

    info = []
    def func(i):
        def inner():
            print(i)
        return inner
    for item in range(10):
        info.append(func(item))
    info[0]()
    info[1]()
    info[4]()
    
  • 相关阅读:
    css中!important的用法
    mysql分区
    js 随机生成信用卡号
    js argument
    lnmp
    php的mcrypt
    php gd
    php socket
    最优服务次序问题 水 NOJ1254
    众数问题 NOJ 1207
  • 原文地址:https://www.cnblogs.com/bigox/p/10698773.html
Copyright © 2011-2022 走看看