zoukankan      html  css  js  c++  java
  • 闭包的特点

    # ### 闭包的特点
    # (1)闭包的特点:
    '''
    
        内函数使用了外函数的局部变量,外函数的局部变量与内函数发生绑定,延长该变量的生命周期
        (实际内存给它存储了这个值,暂时不释放)
    '''
    def outer(num):
    	
    	def inner(val):
    		return num + val
    	return inner
    	
    func = outer(10)  # func = inner
    res = func(21)   # func(21) = inner(21)
    print(res)       # res = num + val =  10 + 21 = 31
    '''
    代码解析:
    	num 接收到普通实参10 此刻 num = 10
    	func = outer(10)  # func = inner
    	res = func(21)    # func(21) = inner(21)
    	print(res)        # res = num + val =  10 + 21 = 31
    '''
    
    # (2) 闭包的意义
    # 模拟鼠标点击的操作
    '''
    # 如果使用全局变量num来进行统计,因为作用域太大,容易造成漏洞.不安全
    num = 0
    def click_num():
    	global num
    	num+=1
    	print(num)
    # 调用一次函数,累加一次num 
    click_num()
    click_num()
    click_num()
    
    num = 100
    click_num()
    click_num()
    '''
    
    # 闭包的意义:
    '''
    	闭包可以优先使用外函数中的变量,并对闭包中的值起到了封装保护的作用.外部无法访问.
    '''
    def click_num():
    	num = 0
    	def func():
    		nonlocal num
    		num+=1
    		print(num)
    	return func
    
    click_num = click_num()
    click_num()
    click_num()
    click_num()
    num = 100
    click_num()
    click_num()
    

      

  • 相关阅读:
    并发运行的思维模型
    进程和线程的区别
    拿来主义
    同步组件合作和团队合作 让世界变得更美好
    strace a++;b++;a+b;
    System 88: GDB Overview
    numpy多维数组维度及添加轴的理解
    Numpy入门
    python列表list 和numpy.array区别
    数组的生成方法
  • 原文地址:https://www.cnblogs.com/huangjiangyong/p/10835768.html
Copyright © 2011-2022 走看看