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 基础学习教程
Feb 08 Python
python实现带错误处理功能的远程文件读取方法
Apr 29 Python
python使用PyGame模块播放声音的方法
May 20 Python
Linux下用Python脚本监控目录变化代码分享
May 21 Python
python操作redis的方法
Jul 07 Python
python异常和文件处理机制详解
Jul 19 Python
python简单验证码识别的实现方法
May 10 Python
Python字典常见操作实例小结【定义、添加、删除、遍历】
Oct 25 Python
pytorch 实现cross entropy损失函数计算方式
Jan 02 Python
使用Django和Postgres进行全文搜索的实例代码
Feb 13 Python
简单了解django处理跨域请求最佳解决方案
Mar 25 Python
pycharm 多行批量缩进和反向缩进快捷键介绍
Jan 15 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
基于Zend的Captcha机制的应用
2013/05/02 PHP
php使用COPY函数更新配置文件的方法
2015/06/18 PHP
PHP的PDO常用类库实例分析
2016/04/07 PHP
浅谈PHP值mysql操作类
2016/06/29 PHP
PHP中文字符串截断无乱码解决方法
2016/10/10 PHP
php微信开发之百度天气预报
2016/11/18 PHP
php 二维数组时间排序实现代码
2016/11/19 PHP
php面向对象的用户登录身份验证
2017/06/08 PHP
PHP+Ajax简单get验证操作示例
2019/03/02 PHP
一个基于jquery的文本框记数器
2012/09/19 Javascript
Jquery实现网页跳转或用命令打开指定网页的解决方法
2013/07/09 Javascript
js下将阿拉伯数字每三位一逗号分隔(如:15000000转化为15,000,000)
2014/06/02 Javascript
jQuery之简单的表单验证实例
2016/07/07 Javascript
js时间比较 js计算时间差的简单实现方法
2016/08/26 Javascript
jQuery实现的图片轮播效果完整示例
2016/09/12 Javascript
js获取时间函数及扩展函数的方法
2016/10/30 Javascript
正则表达式,替换所有HTML标签的简单实例
2016/11/28 Javascript
vue.js语法及常用指令
2017/10/29 Javascript
[01:33]完美世界DOTA2联赛PWL S3 集锦第二期
2020/12/21 DOTA
python求列表交集的方法汇总
2014/11/10 Python
PyChar学习教程之自定义文件与代码模板详解
2017/07/17 Python
Python编程实现正则删除命令功能
2017/08/30 Python
攻击者是如何将PHP Phar包伪装成图像以绕过文件类型检测的(推荐)
2018/10/11 Python
解决pyinstaller打包exe文件出现命令窗口一闪而过的问题
2018/10/31 Python
django框架自定义模板标签(template tag)操作示例
2019/06/24 Python
在自动化中用python实现键盘操作的方法详解
2019/07/19 Python
python中使用while循环的实例
2019/08/05 Python
Python with标签使用方法解析
2020/01/17 Python
如何把python项目部署到linux服务器
2020/08/26 Python
python+openCV对视频进行截取的实现
2020/11/27 Python
python中使用np.delete()的实例方法
2021/02/01 Python
英国在线珠宝店:The Jewel Hut
2017/03/20 全球购物
创业计划书的内容步骤和要领
2014/01/04 职场文书
酒店拾金不昧表扬信
2014/01/18 职场文书
Python还能这么玩之只用30行代码从excel提取个人值班表
2021/06/05 Python
星际争霸 Light vs Action 一场把教主看到鬼畜的比赛
2022/04/01 星际争霸