函数的嵌套
嵌套: 至少2层函数,嵌套在外层的就是外函数,嵌套在内层的就是内函数
def outer(): inner() # error def inner(): print("我是内函数 ... ") inner() # success内部函数可以直接在函数外部调用么 ? 不能
inner()调用外部函数后,内部函数可以在函数外部调用吗 ? 不可以
outer() inner()内部函数可以在函数内部调用吗? 可以
outer()内部函数在函数内部调用时,是否有先后顺序
outer()了解:
python 语法 必须要先定义函数 , 在调用函数 在其他语言中,可以先调用在定义,是允许的; 因为在其他语言当中, 存在预加载机制: 在编译代码之前,先把文件中的所有的函数,提前加载到内存中 然后才真正的编译全部的文件代码 python目前版本,还没有预加载的机制,所以只能先定义在调用;小练习 ,定义三个互相嵌套的函数,调用最内层函数
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() # 函数的调用处LEGB 原则 : 就近找变量原则
找寻变量的调用顺序采用LEGB原则(即就近原则) B —— Builtin(Python); Python内置模块的命名空间 (内建作用域) G —— Global(module); 函数外部所在的命名空间 (全局作用域) E —— Enclosing function locals;外部嵌套函数的作用域 (嵌套作用域) L —— Local(function);当前函数内的作用域 (局部作用域) 依据就近原则,从下往上 从里向外 依次寻找
版权声明:本文为qq_52330730原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。