名称空间名称空间(namespaces):用于存放名字与内存地址绑定关系的地方,是对栈区的划分

作用:名称空间可以使栈区中存放相同的名字,从而解决命名冲突

名称空间分为三种:内置名称空间

全局名称空间

局部名称空间

内置名称空间内置名称空间:用于存放Python解释器中内置的名字

生命周期:Python解释器启动则产生,Python解释器关闭则销毁

例如:print、input、int ...

全局名称空间全局名称空间:运行顶级代码所产生的名字,或者说除函数内定义以及内置的外,剩下的都是全局名称空间

生命周期:Python文件执行时产生,Python文件执行完毕后销毁

例如:# 变量名a

a = 1

# 函数名func

def func():

pass

# 类名MyClass

class MyClass:

pass

局部名称空间局部命名空间:在调用函数时,运行函数体代码过程中产生的函数内的名字

生命周期:函数调用时产生,函数调用完毕后销毁

例如:def func(x, y):

pass

func(1, 2)

名称空间的先后顺序名称空间加载顺序:内置名称空间 -> 全局名称空间 -> 局部名称空间

名称空间销毁顺序:局部名称空间 -> 全局名称空间 -> 内置名称空间

名字的查找优先级:从当前所在位置向上一层一层查找

作用域

全局作用域全局作用域:内置名称空间、全局名称空间

特点:全局存活

全局有效:被所有函数共享

局部作用域局部作用域:局部名称空间

特点:临时存活

局部有效:函数内有效

LEGB原则

找寻变量的调用顺序采用LEGB原则(即就近原则)

B —— Builtin(Python);Python内置模块的命名空间 (内建作用域)

G —— Global(module); 函数外部所在的命名空间 (全局作用域)

E —— Enclosing function locals;外部嵌套函数的作用域(嵌套作用域)

L —— Local(function);当前函数内的作用域 (局部作用域)

依据就近原则,从下往上 从里向外 依次寻找

global与nonlocalglobal:声明全局变量获修改全局变量

nonlocal:修改局部变量(当前函数上一层的局部变量)# global的使用

x = 1

def func():

global x

x = 2

func()

print(x)

# nonlocal的使用

def func1():

x = 1

def func2():

nonlocal x

x = 2

func2()

print(x)

func1()

总结名称空间是对栈的一种划分,真正存在的是栈区。名称空间只是一种虚拟的划分

名称空间只有优先级之分,并无没有嵌套关系

名称空间的“嵌套关系”决定了名字的查找顺序

名称空间的“嵌套关系”以函数定义阶段为准

python命名空间特性_Python命名空间与作用域相关推荐

  1. 简述python的特性_python的一些语言特性(一)

    python的一些语言特性(一) 记录一下方便复习 1 is是对比地址,==是对比值 a = [1] b = [1] print(a is b) # False print(a == b) # Tru ...

  2. 简述python的特性_Python的特性概要

    1.和C比较,Python是解释型的语言, 2.a>字节码特性 b>动态语义,即在赋值时才确定数据类型 c>缩进,点击tap键缩进四个空格,使用编译器是记得查看! 3.注意 写Pyt ...

  3. python高级特性_Python高级特性

    参考原文 开篇:高级特性是用来简化我们常用操作的特性,合理利用高级特性可以使代码更简洁.明了. 切片 取list或tuple中的指定索引范围的操作,用循环十分繁琐,因此Python提供了切片(Slic ...

  4. python 命名空间报错_python命名空间与作用域

    命名空间不共享名称. 在命名空间中的名称能将任何python对象作为值,在不同的命名空间中相同的名称可以与不同的对象相关联.但是,如果存在名称解析协议,则多个命名空间可以一起工作来解析名称.也就是说, ...

  5. python命名空间特性_PHP关键特性之命名空间实例

    PHP关键特性之命名空间实例 //代码会报错,在命名空间内部,假如无法找到当前命名空间下的类,则会报错 //$obj = new ArrayObject(array(1)); $obj = new \ ...

  6. Python基础 F-03 函数-命名空间与作用域

    函数-命名空间与作用域 文章目录 函数-命名空间与作用域 一.命名空间 1.1.定义与作用 1.2.分类 1.4.生命周期 命名空间创建周期 命名空间结束周期 二.作用域 2.1.定义与作用 2.2. ...

  7. python基础(7)-函数命名空间作用域闭包

    函数 动态参数 *args 1 def sum(*args): 2 ''' 3 任何参数都会被args以元组的方式接收 4 ''' 5 print(type(args)) # result:<c ...

  8. el 能否定义作用域变量_python命名空间和作用域

    一.命名空间 1.定义:命名空间(Namespace)是从名称到对象的映射 2.实现:大部分的命名空间都是通过 Python 字典来实现的 3.目的:命名空间提供了在项目中避免名字冲突的一种方法 4. ...

  9. python的命名空间_python命名空间(namespace)

    #命名空间(namespace)#命名空间指的是变量存储的位置,每一个变量都需要存储到指定的命名空间当中#每一个作用域都会有一个它对应的命名空间#全局命名空间,用来保存全局变量.函数命名空间用来保存函 ...

最新文章

  1. enumerate在python中的意思_Python中enumerate用法详解
  2. JavaWeb系列之:Servlet
  3. React学习(3)——列表、键值与表单
  4. 【软件工程】CMMI 能力成熟度模型集成 ( CMMI 工程过程域 | CMMI 支持过程域 ) ★
  5. 动态规划——0-1背包问题
  6. 剩余大学时光里要做的事
  7. 初学者python笔记(面向对象编程、类与对象)
  8. mybatis与Spring整合配置文件
  9. Linux源码编译bison和flex
  10. UE5分屏(小地图)的解决方案
  11. 华为路由器基础配置——IP配置
  12. AI正在把超声波装进你的智能手机 及时筛查人体健康问题
  13. C语言 1982年我国第三次人口普查,全国人口为10.3亿,假如人口增长率为5%。编写一个程序,求在公元多少年总人口翻了一番。
  14. 原码、反码、补码(Integer.MIN_VALUE、Integer.MAX_VALUE)
  15. 吕本富:中国互联网太乱 完全没有游戏规则
  16. 程序员提前下班的福音来了!GitHub、OpenAI 联手推出 AI 代码生成神器
  17. 八道二叉树基础程序面试题
  18. 从《羊了个羊》看随机数的生成原理
  19. BigDecimal 往左移动两位小数_小学五年级上册数学小数除法应用题专项练习,拿给孩子做做看...
  20. Java工具类pdfbox将多个pdf合并成一个pdf。

热门文章

  1. LPS25HB 气压计 资料整理
  2. set删除一个元素时间复杂度_set/map接口及其实现类
  3. jdbc preparestatement 执行多条语句_jmeter获取JDBC响应做接口关联(三)
  4. 骑士 java_在递归骑士之旅中正确声明变量(Java作业)
  5. 教你保存在线视频文件
  6. C语言——球体体积判断素数用递归计算Fibonacci数列
  7. quartus2管教锁定出不来_Quartus II 中常见Warning 原因及解决方法(转载)
  8. 十佳运动员有奖评选系统_2019年度国际足坛十佳运动员,利物浦三星在列,第十名属私心...
  9. c 语言 指针 指向数组,C 指向数组的指针
  10. c 语言 文本处理范例