Python中的变量和作用域详解


Posted in Python onJuly 13, 2016

作用域介绍

python中的作用域分4种情况: L:local,局部作用域,即函数中定义的变量;

E:enclosing,嵌套的父级函数的局部作用域,即包含此函数的上级函数的局部作用域,但不是全局的;

G:globa,全局变量,就是模块级别定义的变量; B:built-in,系统固定模块里面的变量,比如int, bytearray等。 搜索变量的优先级顺序依次是:作用域局部>外层作用域>当前模块中的全局>python内置作用域,也就是LEGB。

x = int(2.9) # int built-in
g_count = 0 # global
def outer():
o_count = 1 # enclosing
def inner():
i_count = 2 # local

当然,local和enclosing是相对的,enclosing变量相对上层来说也是local。

#定义变量a
>>> a = 0
>>> print a
0
#定义函数p()
>>> def p():
... print a
... 
>>> p()
0
#定义函数p2()
>>> def p2():
... print a
... a = 3
... print a
... 
>>> p2() # 运行出错,外部变量a先被引用,不能重新赋值
Traceback (most recent call last):
File "<interactive input>", line 1, in <module>
File "<interactive input>", line 2, in p2
UnboundLocalError: local variable 'a' referenced before assignment
#定义函数p3()
>>> def p3():
... a = 3 # 不引用直接赋值
... print a
... 
>>> p3()
3
>>> print a
0 # 外部变量a并未改变

以上所述是小编给大家介绍的Python中的变量和作用域详解,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
详细探究Python中的字典容器
Apr 14 Python
使用Python内置的模块与函数进行不同进制的数的转换
Mar 12 Python
完美解决Pycharm无法导入包的问题 Unresolved reference
May 18 Python
pytorch 把MNIST数据集转换成图片和txt的方法
May 20 Python
python遍历小写英文字母的方法
Jan 02 Python
django框架防止XSS注入的方法分析
Jun 21 Python
python常用库之NumPy和sklearn入门
Jul 11 Python
Django的性能优化实现解析
Jul 30 Python
python中调试或排错的五种方法示例
Sep 12 Python
python实现控制台输出颜色
Mar 02 Python
总结python多进程multiprocessing的相关知识
Jun 29 Python
OpenCV实现常见的四种图像几何变换
Apr 01 Python
在Python中通过threading模块定义和调用线程的方法
Jul 12 #Python
举例讲解Python编程中对线程锁的使用
Jul 12 #Python
使用Python编写一个最基础的代码解释器的要点解析
Jul 12 #Python
Python中使用bidict模块双向字典结构的奇技淫巧
Jul 12 #Python
Python使用SocketServer模块编写基本服务器程序的教程
Jul 12 #Python
使用Python的Flask框架表单插件Flask-WTF实现Web登录验证
Jul 12 #Python
Python的Flask框架标配模板引擎Jinja2的使用教程
Jul 12 #Python
You might like
PHP5.3与5.5废弃与过期函数整理汇总
2014/07/10 PHP
PHP中通过fopen()函数访问远程文件示例
2014/11/18 PHP
php+jQuery实现的三级导航栏下拉菜单显示效果
2017/08/10 PHP
关于IE浏览器以及Firefox下的javascript冒泡事件的响应层级
2010/10/14 Javascript
网易JS面试题与Javascript词法作用域说明
2010/11/09 Javascript
动态添加删除表格行的js实现代码
2014/02/28 Javascript
js中的hasOwnProperty和isPrototypeOf方法使用实例
2014/06/06 Javascript
JavaScript实现基于十进制的四舍五入实例
2015/07/17 Javascript
jQuery的deferred对象使用详解
2016/09/25 Javascript
Vue自定义事件(详解)
2017/08/19 Javascript
微信小程序实现图片上传、删除和预览功能的方法
2017/12/18 Javascript
AngularJS实现的base64编码与解码功能示例
2018/05/17 Javascript
jQuery使用动画队列自定义动画操作示例
2018/06/16 jQuery
vue.js通过路由实现经典的三栏布局实例代码
2018/07/08 Javascript
JSON的parse()方法介绍
2019/01/31 Javascript
jQuery选择器之基本过滤选择器用法实例分析
2019/02/19 jQuery
Node.js Windows Binary二进制文件安装方法
2019/05/16 Javascript
[55:44]完美世界DOTA2联赛决赛 FTD vs Phoenix 第二场 11.08
2020/11/11 DOTA
分享15个最受欢迎的Python开源框架
2014/07/13 Python
浅谈numpy中linspace的用法 (等差数列创建函数)
2017/06/07 Python
Python元组拆包和具名元组解析实例详解
2018/03/26 Python
python socket 聊天室实例代码详解
2019/11/14 Python
深入浅析python 中的self和cls的区别
2020/06/20 Python
海外淘书首选:AbeBooks
2017/07/31 全球购物
为娇小女性量身打造:Petite Studio
2018/11/01 全球购物
曼城官方网上商店:Manchester City
2019/09/10 全球购物
初中生学习的自我评价
2013/11/14 职场文书
给同事的道歉信
2014/01/11 职场文书
销售员个人求职的自我评价
2014/02/10 职场文书
合作意向书
2014/07/30 职场文书
2014年语文教学工作总结
2014/12/17 职场文书
营销计划书范文
2015/01/17 职场文书
酒店收银员岗位职责
2015/04/07 职场文书
代理词怎么写
2015/05/25 职场文书
2015暑期社会实践调查报告
2015/07/14 职场文书
nginx.conf配置文件结构小结
2022/04/08 Servers