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 05 Python
Python中统计函数运行耗时的方法
May 05 Python
Python中文字符串截取问题
Jun 15 Python
Python脚本实现虾米网签到功能
Apr 12 Python
Python实现代码统计工具(终极篇)
Jul 04 Python
python 创建弹出式菜单的实现代码
Jul 11 Python
在python中实现强制关闭线程的示例
Jan 22 Python
Python 实现顺序高斯消元法示例
Dec 09 Python
Pytest mark使用实例及原理解析
Feb 22 Python
Python itertools.product方法代码实例
Mar 27 Python
python实现读取类别频数数据画水平条形图案例
Apr 24 Python
如何使用scrapy中的ItemLoader提取数据
Sep 30 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
php at(@)符号的用法简介
2009/07/11 PHP
PHP date函数常用时间处理方法
2015/05/11 PHP
PHP cURL初始化和执行方法入门级代码
2015/05/28 PHP
CI框架表单验证实例详解
2016/11/21 PHP
PHP的自定义模板引擎
2017/03/24 PHP
JS操作XML中DTD介绍及使用方法分析
2019/07/04 PHP
js跟随滚动条滚动浮动代码
2009/12/31 Javascript
HTML node相关的一些资料整理
2010/01/01 Javascript
javascript闭包的高级使用方法实例
2013/07/04 Javascript
5款JavaScript代码压缩工具推荐
2014/07/07 Javascript
Lab.js初次使用笔记
2015/02/28 Javascript
推荐阅读的js快速判断IE浏览器(兼容IE10与IE11)
2015/12/13 Javascript
jquery 实现滚动条下拉时无限加载的简单实例
2016/06/01 Javascript
jQuery Ajax前后端使用JSON进行交互示例
2017/03/17 Javascript
自适应布局meta标签中viewport、content、width、initial-scale、minimum-scale、maximum-scale总结
2017/08/18 Javascript
zTree节点文字过多的处理方法
2017/11/24 Javascript
vue实现浏览器全屏展示功能
2019/11/27 Javascript
python模块之StringIO使用示例
2015/04/08 Python
python opencv 直方图反向投影的方法
2018/02/24 Python
python学习入门细节知识点
2018/03/29 Python
解决python通过cx_Oracle模块连接Oracle乱码的问题
2018/10/18 Python
pycham查看程序执行的时间方法
2018/11/29 Python
Python设计模式之命令模式原理与用法实例分析
2019/01/11 Python
使用python实现mqtt的发布和订阅
2019/05/05 Python
解决Python安装时报缺少DLL问题【两种解决方法】
2019/07/15 Python
python图形界面开发之wxPython树控件使用方法详解
2020/02/24 Python
python操作toml文件的示例代码
2020/11/27 Python
域名注册、建站工具、网页主机、SSL证书:Dynadot
2017/01/06 全球购物
New Balance比利时官方网站:购买鞋子和服装
2021/01/15 全球购物
《都江堰》教学反思
2014/02/07 职场文书
坚定理想信念心得体会
2014/03/11 职场文书
大学生实习证明范本
2014/09/19 职场文书
2014年发展党员工作总结
2014/11/12 职场文书
交通事故案件代理词
2015/05/23 职场文书
JavaScript实现优先级队列
2021/12/06 Javascript
十大动画制作软件,Adobe产品上榜两款,第一是行业标准软件
2022/03/18 杂记