• 闭包函数


    # 闭包函数
    '''
    闭包:
    	内函数使用了外函数的局部变量,
    	并且外函数把内函数返回出来的过程是闭包
    	这个内函数叫做闭包函数;
    '''
    # (1) 基本语法
    def outer():
    	a = 5
    	b = 6
    	# inner 是闭包函数
    	def inner():
    		print(a,b)
    	return inner
    res = outer()  # res = inner
    print(res)
    res()          # res() = inner()
    
    # 获取闭包函数使用的变量  __closure__ , cell_contents (了解)
    tup = res.__closure__
    print("<==1==>")
    print(tup)
    # 获取元组里面第一个元素
    obj = tup[0]
    print(obj)
    # 使用cell_contents来获取单元对象当中的值
    res = obj.cell_contents
    print(res)
    
    obj2 = tup[1]
    res2 = obj2.cell_contents
    print(res2)
    print("<==2==>")
    
    # 闭包的特点:
    """
        内函数使用了外函数的局部变量,外函数的局部变量与内函数发生绑定,延长该变量的生命周期
        (实际内存给它存储了这个值,暂时不释放)
    """
    # (2) 闭包函数特点
    def majunqiang_family():
    	dajie = "马蓉"
    	erjie = "马冬梅"
    	kuang = "金矿"
    	# money 局部变量因为在闭包函数中使用,于是发生绑定,延长该变量的生命周期
    	money = 1000
    	
    	def dajie_hobby():
    		nonlocal money
    		money -= 900
    		print("大姐喜欢花钱,喜欢买兰博基尼,喜欢买比基尼,喜欢买channel,家里钱还剩下%d" % (money))
    
    	def erjie_hobby():
    		nonlocal money
    		money += 500
    		print("二姐马冬梅喜欢赚钱,喜欢上长春扎疫苗,因为假疫苗能赔偿,喜欢卖血,5块钱一瓶,家里钱赚了%d" % (money))
    
    	def master():
    		# 返回一个元组,元组里面的每一个元素是函数
    		return (dajie_hobby,erjie_hobby)
    		
    	return master
    
    
    func = majunqiang_family()
    tup = func()
    print(tup)
    # 大姐函数
    dajie = tup[0]
    dajie()
    # 二姐函数
    erjie = tup[1]
    erjie()
    

      

  • 相关阅读:
    Altium_Designer-原理图库如何添加低电平有效的管脚?
    Altium_Designer-怎么将“原理图的更改”更新到“pcb图”?
    Altium_Designer-各种布线总结
    Altium_Designer-PCB中各层作用详解
    AD的命名规则 AD常用产品型号命名规则
    Altium_Designer如何快速寻找元件和封装
    Makedown语法说明
    使用Atom编写Makedown
    Vim基本命令
    Python-Django框架学习笔记——第二课:Django的搭建
  • 原文地址:https://www.cnblogs.com/huangjiangyong/p/10835766.html
Copyright © 2020-2023  润新知