码迷,mamicode.com
首页 > 其他好文 > 详细

函数的嵌套

时间:2021-04-08 12:53:04      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:oca   加载   内存   als   margin   编译   命名空间   class   cal   

1.什么是函数的嵌套
"""
  互相嵌套的两个函数:
  包裹在外层的叫做外函数,内层的就是内函数
  

1 def outer():
2     # inner()
3     def inner():
4         print("我是inner函数")

 

(1)内部函数可以直接在函数外部调用么 不行
 inner()
 (2)调用外部函数后,内部函数可以在函数外部调用吗 不行
 outer()
 inner()
 (3)内部函数可以在函数内部调用吗 可以
outer()
 (4)内部函数在函数内部调用时,是否有先后顺序 有的
 先定义在调用
在其他语言中有预加载的机制,提前把函数驻留到内存中,然后再去编译脚本内容
 python没有预加载函数的机制,只能先定义在调用;


 外函数是outer 中间函数是inner 最里层是smaller ,调用smaller函数

1 def outer():
2     def inner():
3         def smaller():
4             print("我是smaller函数")
5         smaller()
6     inner()
7 outer()

 

# LEGB 原则

 1 def outer():    
 2     
 3     def inner():
 4         
 5         def smaller():    
 6             
 7             print(a)
 8         smaller()
 9     inner()
10 outer()

 

LEGB原则(就近找变量原则)


#找寻变量的调用顺序采用LEGB原则(即就近原则)
B —— Builtin(Python);Python内置模块的命名空间 (内建作用域)
G —— Global(module); 函数外部所在的命名空间 (全局作用域)
E —— Enclosing function locals;外部嵌套函数的作用域(嵌套作用域)
L —— Local(function);当前函数内的作用域 (局部作用域)
依据就近原则,从下往上 从里向外 依次寻找

 

函数的嵌套

标签:oca   加载   内存   als   margin   编译   命名空间   class   cal   

原文地址:https://www.cnblogs.com/xo1990/p/14623688.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!