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自定义类并使用的方法
May 07 Python
Python中字典的基础知识归纳小结
Aug 19 Python
Python中函数eval和ast.literal_eval的区别详解
Aug 10 Python
Python机器学习之K-Means聚类实现详解
Feb 22 Python
数据清洗--DataFrame中的空值处理方法
Jul 03 Python
python将txt等文件中的数据读为numpy数组的方法
Dec 22 Python
python对列进行平移变换的方法(shift)
Jan 10 Python
Python数据可视化:幂律分布实例详解
Dec 07 Python
Python中pyecharts安装及安装失败的解决方法
Feb 18 Python
基于python实现破解滑动验证码过程解析
May 28 Python
什么是python的函数体
Jun 19 Python
python对输出的奇数偶数排序实例代码
Dec 04 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
自动分页的不完整解决方案
2007/01/12 PHP
PHP 最大运行时间 max_execution_time修改方法
2010/03/08 PHP
php SQL Injection with MySQL
2011/02/27 PHP
php实现数组筛选奇数和偶数示例
2014/04/11 PHP
php实现购物车功能(下)
2016/01/05 PHP
PHP实现的装箱算法示例
2018/06/23 PHP
Laravel源码解析之路由的使用和示例详解
2018/09/27 PHP
浅谈PHP匿名函数和闭包
2019/03/08 PHP
div移动 输入框不能输入的问题
2009/11/19 Javascript
jquery将一个表单序列化为一个对象的方法
2014/01/03 Javascript
开源的javascript项目Kissy介绍
2014/11/28 Javascript
jQuery实现选中弹出窗口选择框内容后赋值给文本框的方法
2015/11/23 Javascript
Javascript 事件冒泡机制详细介绍
2016/10/10 Javascript
vue实现可增删查改的成绩单
2016/10/27 Javascript
javascript添加前置0(补零)的几种方法
2017/01/05 Javascript
nodejs实现邮件发送服务实例分享
2017/03/29 NodeJs
关于vue.js发布后路径引用的问题解决
2017/08/15 Javascript
JS实现点击链接切换显示隐藏内容的方法
2017/10/19 Javascript
使用pm2自动化部署node项目的方法步骤
2019/01/28 Javascript
详解Vscode中使用Eslint终极配置大全
2019/11/08 Javascript
javascript设计模式 ? 模板方法模式原理与用法实例分析
2020/04/23 Javascript
[01:07]2015国际邀请赛 中国区预选赛精彩回顾
2015/06/15 DOTA
python开发之函数定义实例分析
2015/11/12 Python
Python冒泡排序注意要点实例详解
2016/09/09 Python
python 3.7.0 安装配置方法图文教程
2018/08/27 Python
Python函数装饰器原理与用法详解
2019/08/16 Python
用Python爬取QQ音乐评论并制成词云图的实例
2019/08/24 Python
TensorFlow实现模型断点训练,checkpoint模型载入方式
2020/05/26 Python
python实现暗通道去雾算法的示例
2020/09/27 Python
Under Armour安德玛意大利官网:美国高端运动科技品牌
2020/01/16 全球购物
澳大利亚最好的电动自行车:Leon Cycle
2020/12/19 全球购物
感恩小明星事迹材料
2014/05/23 职场文书
财会专业大学生求职信
2014/09/26 职场文书
2014年保险业务员工作总结
2014/12/23 职场文书
生日宴会祝酒词
2015/08/10 职场文书
2019客服个人年终工作总结范文
2019/07/08 职场文书