变量是拥有匹配对象的名字(标识符)。命名空间是一个包含了变量名称们(键)和它们各自相应的对象们(值)的字典。一个 Python 表达式可以访问局部命名空间和全局命名空间里的变量。如果一个局部变量和一个全局变量重名,则局部变量会覆盖全局变量。每个函数都有自己的命名空间。类的方法的作用域规则和通常函数的一样。Python 会智能地猜测一个变量是局部的还是全局的,它假设任何在函数内赋值的变量都是局部的。因此,如果要给函数内的全局变量赋值,必须使用 global 语句。

global VarName 的表达式会告诉 Python, VarName 是一个全局变量,这样 Python 就不会在局部命名空间里寻找这个变量了。

例如,我们在全局命名空间里定义一个变量 Money。我们再在函数内给变量 Money 赋值,然后 Python 会假定 Money 是一个局部变量。然而,我们并没有在访问前声明一个局部变量 Money,结果就是会出现一个 UnboundLocalError 的错误。如下代码所示:

#!/usr/bin/python
#-*- coding: UTF-8 -*-
Money = 1000
def Addmoney():Money =Money + 1
print Money
Addmoney()
print Money

运行结果:

1000
Traceback (most recent call last):File "import.py", line 7, in <module>Addmoney()File "import.py", line 5, in AddmoneyMoney =Money + 1
UnboundLocalError: local variable 'Money' referenced before assignment

想要申明变量Money是全局变量,就要用 global 去申明.具体的实现代码如下:

#!/usr/bin/python
#-*- coding: UTF-8 -*-
Money = 1000
def Addmoney():global MoneyMoney =Money + 1
print Money
Addmoney()
print Money

运行结果

1000
1001

转载于:https://blog.51cto.com/9409270/2049136

Python的命名空间和作用域相关推荐

  1. python中变量的作用域有几种_Python中变量的作用域(variable scope)

    http://www.crifan.com/summary_python_variable_effective_scope/ 解释python中变量的作用域 示例: 1.代码版 #!/usr/bin/ ...

  2. python进阶15变量作用域LEGB

    原创博客链接:python进阶15变量作用域LEGB 作用域 "作用域"定义了Python在哪一个层次上查找某个"变量名"对应的对象.接下来的问题就是:&quo ...

  3. Python分享:命名空间和作用域的基础知识整合

    什么是命名空间? 命名空间是一个系统,它对Python中的每个对象都有一个唯一的名称.对象可能是变量或方法. Python本身以Python字典的形式维护名称空间. 在类似的行中,Python解释器可 ...

  4. python命名空间特性_Python命名空间与作用域

    名称空间名称空间(namespaces):用于存放名字与内存地址绑定关系的地方,是对栈区的划分 作用:名称空间可以使栈区中存放相同的名字,从而解决命名冲突 名称空间分为三种:内置名称空间 全局名称空间 ...

  5. 21 Python模块、import语句、搜索路径、变量、命名空间和作用域、dir函数、globals()和locals()函数、reload()函数、Python中的包

    21Python模块 Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句. 模块让你能够有逻辑地组织你的 Python ...

  6. [转载] Python命名空间和作用域

    参考链接: Python命名空间和范围 Python命名空间和作用域 Python作用域和命名空间命名空间作用域 全局变量和局部变量global和nonlocal关键字 Python作用域和命名空间 ...

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

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

  8. python 命名空间和作用域

    一.Namespace 命名空间 Namespace命名空间,命名空间是一个字典(dictionary),它的键就是变量名,它的值就是那些变量的值.命名空间的一大作用是避免名字冲突. python使用 ...

  9. 11. python入门复习教程之命名空间与作用域,再谈异常,标准库,持久化与序列化

    如果你学习 python 一段时间之后,会经常碰到命名空间,作用域 这两个名词,接下来咱们就从这两个名词开始入手,展开这篇博客. 命名空间与作用域 命名空间是指对象所处的位置,命名二字一般指的是变量名 ...

最新文章

  1. swift 简单语句 控制流语句
  2. Android 角色时间戳
  3. java虚拟机加载类_java虚拟机之类加载机制(一)
  4. 应用服务器与数据库之间是长连接,要接收多个 tcp 长连接不断发送的数据并存储,哪些数据库或数据存储方案比较合适?...
  5. Request method 'GET' not supported解决方式
  6. python发送邮件并返回提示_python-邮件提醒功能
  7. 洛谷 P3320: bzoj 3991: LOJ 2182: [SDOI2015]寻宝游戏
  8. 数据库工作笔记018---Windows下mysql安装_服务无法启动没有报告解决
  9. SpringMVC-高级参数绑定
  10. 用python偷懒Arcgis(地类编码转地类名称)
  11. 【邮箱】Foxmail中如何登陆网易邮箱?
  12. docker学习总结X - 碰到的问题
  13. 依图科技CTO颜水成被曝离职,或转战东南亚独角兽Shopee
  14. PC端微信登录实现流程
  15. 802.11协议:wifi
  16. 等值连接mysql_数据库等值连接,左连接,右连接的区别
  17. python基于PHP+MySQL的连锁商店仓库管理系统
  18. 我的2013,它不平淡
  19. 海外服务器香港美国服务器哪里的比较好价格便宜的
  20. 第34课:彻底解密Spark 2.1.X中Shuffle 中SortShuffleWriter排序源码内幕解密

热门文章

  1. Mask R-CNN 源代码终上线,Facebook 开源目标检测平台—Detectron
  2. 资源 | 麻省理工学院开放 2018 自动驾驶课程
  3. 如何用Python和深度神经网络识别图像?
  4. Maven官宣:干掉Maven和Gradle!推出更强更快更牛逼的新一代构建工具,炸裂!
  5. 为什么 Java 后端开发没有大规模采用 Kotlin?
  6. 全链路监控细节和难点剖析!
  7. 一个HTTP请求的曲折经历
  8. 厉害了,为了干掉 HTTP ,Spring团队又开源 nohttp 项目!
  9. 大龄读博那几年,与君共勉
  10. 深度学习的第一性原理!