Python的命名空间和作用域
变量是拥有匹配对象的名字(标识符)。命名空间是一个包含了变量名称们(键)和它们各自相应的对象们(值)的字典。一个 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的命名空间和作用域相关推荐
- python中变量的作用域有几种_Python中变量的作用域(variable scope)
http://www.crifan.com/summary_python_variable_effective_scope/ 解释python中变量的作用域 示例: 1.代码版 #!/usr/bin/ ...
- python进阶15变量作用域LEGB
原创博客链接:python进阶15变量作用域LEGB 作用域 "作用域"定义了Python在哪一个层次上查找某个"变量名"对应的对象.接下来的问题就是:&quo ...
- Python分享:命名空间和作用域的基础知识整合
什么是命名空间? 命名空间是一个系统,它对Python中的每个对象都有一个唯一的名称.对象可能是变量或方法. Python本身以Python字典的形式维护名称空间. 在类似的行中,Python解释器可 ...
- python命名空间特性_Python命名空间与作用域
名称空间名称空间(namespaces):用于存放名字与内存地址绑定关系的地方,是对栈区的划分 作用:名称空间可以使栈区中存放相同的名字,从而解决命名冲突 名称空间分为三种:内置名称空间 全局名称空间 ...
- 21 Python模块、import语句、搜索路径、变量、命名空间和作用域、dir函数、globals()和locals()函数、reload()函数、Python中的包
21Python模块 Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句. 模块让你能够有逻辑地组织你的 Python ...
- [转载] Python命名空间和作用域
参考链接: Python命名空间和范围 Python命名空间和作用域 Python作用域和命名空间命名空间作用域 全局变量和局部变量global和nonlocal关键字 Python作用域和命名空间 ...
- Python基础 F-03 函数-命名空间与作用域
函数-命名空间与作用域 文章目录 函数-命名空间与作用域 一.命名空间 1.1.定义与作用 1.2.分类 1.4.生命周期 命名空间创建周期 命名空间结束周期 二.作用域 2.1.定义与作用 2.2. ...
- python 命名空间和作用域
一.Namespace 命名空间 Namespace命名空间,命名空间是一个字典(dictionary),它的键就是变量名,它的值就是那些变量的值.命名空间的一大作用是避免名字冲突. python使用 ...
- 11. python入门复习教程之命名空间与作用域,再谈异常,标准库,持久化与序列化
如果你学习 python 一段时间之后,会经常碰到命名空间,作用域 这两个名词,接下来咱们就从这两个名词开始入手,展开这篇博客. 命名空间与作用域 命名空间是指对象所处的位置,命名二字一般指的是变量名 ...
最新文章
- swift 简单语句 控制流语句
- Android 角色时间戳
- java虚拟机加载类_java虚拟机之类加载机制(一)
- 应用服务器与数据库之间是长连接,要接收多个 tcp 长连接不断发送的数据并存储,哪些数据库或数据存储方案比较合适?...
- Request method 'GET' not supported解决方式
- python发送邮件并返回提示_python-邮件提醒功能
- 洛谷 P3320: bzoj 3991: LOJ 2182: [SDOI2015]寻宝游戏
- 数据库工作笔记018---Windows下mysql安装_服务无法启动没有报告解决
- SpringMVC-高级参数绑定
- 用python偷懒Arcgis(地类编码转地类名称)
- 【邮箱】Foxmail中如何登陆网易邮箱?
- docker学习总结X - 碰到的问题
- 依图科技CTO颜水成被曝离职,或转战东南亚独角兽Shopee
- PC端微信登录实现流程
- 802.11协议:wifi
- 等值连接mysql_数据库等值连接,左连接,右连接的区别
- python基于PHP+MySQL的连锁商店仓库管理系统
- 我的2013,它不平淡
- 海外服务器香港美国服务器哪里的比较好价格便宜的
- 第34课:彻底解密Spark 2.1.X中Shuffle 中SortShuffleWriter排序源码内幕解密