当前位置:   article > 正文

Python 函数的嵌套_python嵌套函数

python嵌套函数

函数的嵌套

  • 嵌套: 至少2层函数,嵌套在外层的就是外函数,嵌套在内层的就是内函数
    def outer():
    	inner()                              #  error
    	def inner():
    		print("我是内函数 ... ")
    	inner()                              # success
    
    • 1
    • 2
    • 3
    • 4
    • 5
  • 内部函数可以直接在函数外部调用么 ? 不能

    inner()

  • 调用外部函数后,内部函数可以在函数外部调用吗 ? 不可以
    outer()
    inner()
    
    • 1
    • 2
  • 内部函数可以在函数内部调用吗? 可以
    outer()
    
    • 1
  • 内部函数在函数内部调用时,是否有先后顺序
    outer()
    
    • 1
  • 了解:
    python 语法 必须要先定义函数 , 在调用函数
    在其他语言中,可以先调用在定义,是允许的;
    
    因为在其他语言当中, 存在预加载机制:
    在编译代码之前,先把文件中的所有的函数,提前加载到内存中
    然后才真正的编译全部的文件代码
    
    python目前版本,还没有预加载的机制,所以只能先定义在调用;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
  • 小练习 ,定义三个互相嵌套的函数,调用最内层函数
    outer函数的定义处
    a = 400
    id = 500
    def outer():
    	a = 300
    	
    	def inner():                         # inner的定义处
    		a = 200
    		def smaller():                   # smaller的定义处
    			a = 100
    			print("我是smaller函数", a)
    			print(id)
    		smaller()                        # smaller的调用处
    	inner()                              # 调用inner 函数
    
    outer()                                  #  函数的调用处
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
  • LEGB 原则 : 就近找变量原则
    找寻变量的调用顺序采用LEGB原则(即就近原则)
    B —— Builtin(Python); Python内置模块的命名空间      (内建作用域)
    G —— Global(module); 函数外部所在的命名空间         (全局作用域)
    E —— Enclosing function locals;外部嵌套函数的作用域 (嵌套作用域)
    L —— Local(function);当前函数内的作用域             (局部作用域)
    依据就近原则,从下往上 从里向外 依次寻找
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/585271
推荐阅读
相关标签
  

闽ICP备14008679号