zoukankan      html  css  js  c++  java
  • nonlocal 修改局部变量

    # ### nonlocal  修改局部变量
    '''
    nonlocal 专门用于修改局部变量
    	(1)它自动寻找上一层空间的局部变量用来修改
    	(2)如果上一级也没有,在不停的向上寻找
    	(3)如果再也找不到了,直接报错
    '''
    # (1)nonlocal 符合LEGB原则
    def outer():
    	a = 15
    	def inner():
    		nonlocal a
    		a = 17
    		print(a)		
    	inner()
    	print(a)
    outer()
    
    # (2) nonlocal 修改的是局部变量,不是全局变量.
    a = 16
    def outer():
    	a = 10
    	def inner():
    		# a = 11
    		def smaller():
    			nonlocal a
    			a += 3
    			print(a)
    		smaller()
    	inner()			
    outer()
    
    # (3) 不使用nonlocal 是否可以修改局部变量?
    def outer():
    	# a  = 3 
    	lst = [1,2,3,4,5]
    	def smaller():
    		lst[2] += 5
    	smaller()
    	print(lst)
    	
    outer()
    
    # 注意点:
    '''
    # a = 20
    def outer():	
    	a = 81
    	def inner():
    		global a
    		a = 16
    		def smaller():
    			# nonlocal a
    			# print(a)  # 获取a
    			# global a
    			# a+=3
    			# 上一级找到的是一个全局变量,nonlocal无法修改
    			nonlocal a
    			print(a)
    		smaller()
    	inner()
    outer()
    '''
    

      

  • 相关阅读:
    docker swarm 集群搭建和臫servoce对服务扩容
    docker 可视化 portainer
    docker Compose
    hadoop2 安装
    y的最大值最小值切割
    滑块图片拼接
    ast 对象还原
    babel/types is判断
    t.isLiteral()
    杂题集合
  • 原文地址:https://www.cnblogs.com/huangjiangyong/p/10835763.html
Copyright © 2011-2022 走看看