全局名称空间:在python解释器开始执行之后, 就会在内存中开辟一个空间, 每当遇到一个变量的时候, 就把变量名和值之间的关系记录下来, 但是当遇到函数定义的时候, 解释器只是把函数名读入内存, 表示这个函数存在了, 至于函数内部的变量和逻辑, 解释器是不关心的. 也就是说一开始的时候函数只是加载进来, 仅此而已, 只有当函数被调用和访问的时候, 解释器才会根据函数内部声明的变量来进行开辟变量的内部空间. 随着函数执行完毕, 这些函数内部变量占用的空间也会随着函数执行完毕而被清空.

我们首先回忆一下Python代码运行的时候遇到函数是怎么做的,从Python解释器开始执行之后,就在内存中开辟里一个空间,每当遇到一个变量的时候,就把变量名和值之间对应的关系记录下来,但是当遇到函数定义的时候,解释器只是象征性的将函数名读如内存,表示知道这个函数存在了,至于函数内部的变量和逻辑,解释器根本不关心。

等执行到函数调用的时候,Python解释器会再开辟一块内存来储存这个函数里面的内容,这个时候,才关注函数里面有哪些变量,而函数中的变量回储存在新开辟出来的内存中,函数中的变量只能在函数内部使用,并且会随着函数执行完毕,这块内存中的所有内容也会被清空。

我们给这个‘存放名字与值的关系’的空间起了一个名字-------命名空间。

代码在运行伊始,创建的存储“变量名与值的关系”的空间叫做全局命名空间;

在函数的运行中开辟的临时的空间叫做局部命名空间也叫做临时名称空间。

py文件中,存放变量与值的关系的一个空间叫做全局名称空间,而当执行一个函数时,内存中会临时开辟一个空间,临时存放函数中的变量与值的关系,这个叫做临时名称空间,或者局部名称空间。

其实python还有一个空间叫做内置名称空间:内置名称空间存放的就是一些内置函数等拿来即用的特殊的变量:input,print,list等等

#python分为三个空间:

#内置名称空间(builtins.py)

#全局名称空间(当前py文件)

#局部名称空间(函数,函数执行时才开辟)

#加载顺序:

#内置名称空间-->全局名称空间-->局部名称空间(函数执行时)

#取值顺序(就近原则)(单项不可逆)

# name = '123'

# def func():

# name = 'alex'

# print(name)

# func()

#(从局部找时)局部命名空间-->全局命名空间-->内置名称空间

python全局名称空间_python名称空间,命名空间相关推荐

  1. python 免费空间_python 免费空间_google engine

    Python和高德开放平台--地名地址空间化及采集 640x280 - 15KB - JPEG python的POCO空间_POCO空间_POCO网(PO 165x165 - 5KB - JPEG R ...

  2. python存储数据空间最小_python检测空间储存剩余大小和指定文件夹内存占用的实例...

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  3. python名字未定义_Python名称错误:未定义名称“”

    我目前正在扩展python技能,通过编程一个程序生成的文本格式的地下城级别.我很困惑为什么我的"交叉"定义不起作用.下面是包含def的类:class Room: global x1 ...

  4. python全局解释锁_Python GIL 全局解释性锁介绍

    什么是GIL GIL (Global Interpreter Lock),全局解释性锁,它上锁的对象是解释器,而Python代码的运行需要解释器进行解释成字节码并提供虚拟机运行,这么大粒度的锁意味着, ...

  5. python 全局解释器锁_python全局解释器锁(GIL)

    什么是全局解释器锁GIL 首先需要明确的一点是GIL并不是Python的特性,它是在实现Python解析器(CPython)时所引入的一个概念.就好比C++是一套语言(语法)标准,但是可以用不同的编译 ...

  6. python全局名称空间_python之名称空间知识点整理

    命名空间的定义 python解释器在加载py文件时在内存中开辟的空间,该空间使用字典来存放对象与值.字典的键保存了py文件中的变量名.方法名.类名及其他环境变量名,对应的值保存了该对象的值(或内存地址 ...

  7. python的全称_python名称空间介绍

    python名称空间介绍 名称空间 python 中名称空间分三种: 内置名称空间 全局名称空间 局部名称空间 内置名称空间: 原码里面的一些函数都是存在这个内存空间中,任何模块均可访问它,它存放着内 ...

  8. python名称空间_python基础:名称空间与作用域

    Python的变量定义后都有自己的作用域,每个作用域内都有名字空间.名称空间就是变量名称与对象的关联关系.Python中使用变量名引用对象,需要使用该变量时,就在命名空间中进行搜索,获取对应的对象.从 ...

  9. Python Day 10 函数(名称空间,作用域,作用域链,加载顺序等; 函数的嵌套 global,nonlocal)...

    Python Day 10  函数(名称空间,作用域,作用域链,加载顺序等; 函数的嵌套 global,nonlocal) 名称空间(命名空间): 当程序运行时,代码从上至下一次读取,遇到变量与值, ...

最新文章

  1. Docker环境安装Kafka
  2. 小程序禁用ios 左右滑动_如何在使用应用程序时禁用iOS控制中心
  3. 黑苹果不能imessage_如何修复iMessage在iOS 10中不显示消息效果
  4. 解决ListView 缓存机制带来的显示不正常问题
  5. 卸载mysql8.0卸载程序_程序卸载失败,来使用微软官方的Windows卸载工具试试
  6. 微信小程序之二维仿射变换
  7. 《功夫》– 技穷后的挣扎
  8. 计算机两个账户共享文件,两台电脑如何共享文件,简简单单六步即可实现文件共享...
  9. LeetCode-75. 颜色分类(荷兰国旗问题)
  10. 设置Notes暗黑模式
  11. Quitting an application - is that frowned upon?
  12. Xshell 6链接Liunx链接不上:
  13. 【Transformer】继续学习:Attention,Self-Attention,Multi-head Attention。
  14. Jersey框架二:Jersey对JSON的支持
  15. HDU - Robberies(01背包)
  16. C语言为什么不能移植,C语言有可移植性强和可读性好等优点,而汇编语言的高效、快速等优点又是C语言所难以达...
  17. creo4.0 二维图转pdf
  18. Python爬虫实战(四) :下载煎蛋网所有妹子照片
  19. 2019年互联网高频Java面试题指南!互联网升职加薪方案!
  20. 使用Python进行图像处理

热门文章

  1. java使用Socket类接收和发送数据
  2. python怎么判断输入的是不是数字_如何在PYTHON里判断字符串是否为数字
  3. cpu system linux,LINUX system BOOT
  4. Java常用设计模式————原型模式(二)之深拷贝与浅拷贝
  5. mysql schema命名规范_数据库设计 命名及编码规范
  6. the java home_the java_home environment variable is not defined correctly
  7. 输出一个整数的逆序数
  8. (枚举)餐厅点餐(fzu2086)
  9. linux 开启关闭tomcat服务器端口,linux系统安装、启动和关闭tomcat
  10. 有趣的编程代码_iPad amp; Mac 编程游戏推荐