博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
10、函数进阶---命名空间
阅读量:5332 次
发布时间:2019-06-14

本文共 794 字,大约阅读时间需要 2 分钟。

又名name space, 顾名思义就是存放名字的地方,存什么名字呢?举例说明,若变量x=1,1存放于内存中,那名字x存放在哪里呢?名称空间正是存放名字x与1绑定关系的地方
名称空间共3种,分别如下
  • locals: 是函数内的名称空间,包括局部变量和形参
  • globals: 全局变量,函数定义所在模块的名字空间
  • builtins: 内置模块的名字空间
不同变量的作用域不同就是由这个变量所在的命名空间决定的。
作用域即范围
  • 全局范围:全局存活,全局有效
  • 局部范围:临时存活,局部有效
查看作用域方法 globals(),locals()
作用域的查找顺序
level = 'L0'n = 22 def func():    level = 'L1'    n = 33    print(locals())     def outer():        n = 44        level = 'L2'        print(locals(),n)         def inner():            level = 'L3'            print(locals(),n) #此外打印的n是多少?        inner()    outer()func()

 

问题:在inner()里的打印的n的值是多少?
LEGB 代表名字查找顺序: locals -> enclosing function -> globals -> __builtins__
  • locals 是函数内的名字空间,包括局部变量和形参
  • enclosing 外部嵌套函数的名字空间
  • globals 全局变量,函数定义所在模块的名字空间
  • builtins 内置模块的名字空间
 

转载于:https://www.cnblogs.com/vettel2018/p/10066959.html

你可能感兴趣的文章
Leetcode-944 Delete Columns to Make Sorted(删除列以使之有序)
查看>>
P1087-FBI树
查看>>
怎么在某个控制器中判断程序是否在前台或后台
查看>>
第三周vim入门学习1
查看>>
Linux内核分析(第九周)
查看>>
Serlvet学习笔记之一 ——实现servlet的3种方法
查看>>
批处理
查看>>
使用pycharm编写自动化脚本
查看>>
browser-sync启动命令
查看>>
HttpWebRequest请求返回非200的时候 HttpWebResponse怎么接受返回错误提示
查看>>
VBScript 内置函数
查看>>
java打jar包的几种方式详解
查看>>
关于sublime3中package controle不出来的问题
查看>>
[转]Linux动态库(.so)搜索路径
查看>>
c/c++中typedef详解
查看>>
[译]Javascript数列filter方法
查看>>
使用极酷阳光播放器做流媒体播放并不暴露视频地址
查看>>
XamarinAndroid组件教程设置动画的时长参数
查看>>
Visual Studio 2019更新到16.1.4
查看>>
μC/OS-II 信号量集
查看>>