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查询sqlite数据表的方法
May 08 Python
Python中的rfind()方法使用详解
May 19 Python
Python实现Windows上气泡提醒效果的方法
Jun 03 Python
Python中将字典转换为XML以及相关的命名空间解析
Oct 15 Python
用python处理图片之打开\显示\保存图像的方法
May 04 Python
Pycharm设置界面全黑的方法
May 23 Python
Python OpenCV处理图像之图像直方图和反向投影
Jul 10 Python
python 2.7.13 安装配置方法图文教程
Sep 18 Python
将python运行结果保存至本地文件中的示例讲解
Jul 11 Python
python 表格打印代码实例解析
Oct 12 Python
Python 中如何写注释
Aug 28 Python
python操作链表的示例代码
Sep 27 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
openPNE常用方法分享
2011/11/29 PHP
PHP 利用Mail_MimeDecode类提取邮件信息示例
2014/01/26 PHP
php实现简单加入购物车功能
2017/03/07 PHP
Nigma vs Liquid BO3 第一场2.13
2021/03/10 DOTA
jquery 常用操作整理 基础入门篇
2009/10/14 Javascript
jQuery中的bind绑定事件与文本框改变事件的临时解决方法
2010/08/13 Javascript
JQuery给元素添加/删除节点比如select
2013/04/02 Javascript
关于JS中的闭包浅谈
2013/08/23 Javascript
html文本框提示效果的示例代码
2014/06/28 Javascript
简单易用的倒计时js代码
2014/08/04 Javascript
微信js-sdk分享功能接口常用逻辑封装示例
2016/10/13 Javascript
jquery UI Datepicker时间控件冲突问题解决
2016/12/16 Javascript
vue双向绑定的简单实现
2016/12/22 Javascript
angular.js中解决跨域问题的三种方式
2017/07/12 Javascript
nodejs实现大文件(在线视频)的读取
2020/10/16 NodeJs
element ui 表格动态列显示空白bug 修复方法
2018/09/04 Javascript
vue项目打包后上传至GitHub并实现github-pages的预览
2019/05/06 Javascript
解决vue 表格table列求和的问题
2019/11/06 Javascript
纯js+css实现仿移动端淘宝网站的弹出详情框功能
2019/12/29 Javascript
js实现蒙版效果
2020/01/11 Javascript
vue实现瀑布流组件滑动加载更多
2020/03/10 Javascript
[52:08]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#2Fnatic VS OG第一局
2016/03/05 DOTA
[00:32]2016完美“圣”典风云人物:Maybe宣传片
2016/12/05 DOTA
python中的列表推导浅析
2014/04/26 Python
python网络编程学习笔记(五):socket的一些补充
2014/06/09 Python
python实现按任意键继续执行程序
2016/12/30 Python
如何利用Boost.Python实现Python C/C++混合编程详解
2018/11/08 Python
全面了解django的缓存机制及使用方法
2019/07/22 Python
python3 常见解密加密算法实例分析【base64、MD5等】
2019/12/19 Python
Python使用进程Process模块管理资源
2020/03/05 Python
JVM是一个编译程序还是解释程序
2012/09/11 面试题
保洁主管岗位职责
2013/11/20 职场文书
《假如》教学反思
2014/04/17 职场文书
英语感谢信范文
2015/01/20 职场文书
2016年教师新年寄语
2015/08/18 职场文书
MySQL主从切换的超详细步骤
2022/06/28 MySQL