zoukankan      html  css  js  c++  java
  • 函数的嵌套

    # ### 函数的嵌套
    '''
    嵌套在外层,称之外函数
    嵌套在里层,称之内函数
    '''
    
    def outer():
    	
    	def inner():
    		print("我是inner函数")
    	inner()
    outer()
    # inner()
    '''
    (1)内部函数可以直接在函数外部调用么   不可以
    (2)调用外部函数后,内部函数可以在函数外部调用吗  不可以
    (3)内部函数可以在函数内部调用吗  可以
    (4)内部函数在函数内部调用时,是否有先后顺序  有顺序
    	无论在函数内还是函数外:都要遵循先定义在调用的顺序
    '''
    
    # 外层函数outer 里面是inner , inner里面还嵌套一个smaller内函数 ,调用smaller
    # a = 17
    def outer():
    	# a = 16
    	# id = 99
    	def inner():
    		# a = 15
    		def smaller():
    			# a = 10
    			print(id)
    			print("我是smaller函数")
    		smaller()
    			
    	inner()
    			
    			
    outer()			
    			
    # LEGB (就近找变量原则)	
    '''	
    #找寻变量的调用顺序采用LEGB原则(即就近原则)
    B —— Builtin(Python);Python内置模块的命名空间      (内建作用域)(内建命名空间)
    G —— Global(module); 函数外部所在的命名空间        (全局作用域)(全局命名空间)
    E —— Enclosing function locals;外部嵌套函数的作用域(嵌套作用域)(局部命名空间)
    L —— Local(function);当前函数内的作用域            (局部作用域)(局部命名空间)
    依据就近原则,从下往上 从里向外 依次寻找
    '''		
    
    # 额外注意点
    '''如果先前局部变量存在a,删除之后在获取就获取不到,
    如果先前不存在该局部变量,默认向上按照LEGB原则依次寻找
    '''
    a = 10
    def func():
    	a = 20
    	del a
    	# print(a)
    func()
    # print(a)
    

      

  • 相关阅读:
    Oracle数据库ORA-01109 数据库未打开
    使用sqlplus创建Oracle表空间
    软件测试技术
    Django + Uwsgi + Nginx 的生产环境部署
    Linux下部署 apache+jdk+tomcat
    生成随机验证码
    PhoneGap(二维码扫描 )
    .net程序 用邮箱找回密码代码
    .net程序调用新浪微博接口发微博
    左连接,右连接,内连接,外连接的区别
  • 原文地址:https://www.cnblogs.com/huangjiangyong/p/10835758.html
Copyright © 2011-2022 走看看