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中SOAP项目的介绍及其在web开发中的应用
Apr 14 Python
python中pygame针对游戏窗口的显示方法实例分析(附源码)
Nov 11 Python
Python爬虫通过替换http request header来欺骗浏览器实现登录功能
Jan 07 Python
python list删除元素时要注意的坑点分享
Apr 18 Python
Python把csv数据写入list和字典类型的变量脚本方法
Jun 15 Python
详解python3中的真值测试
Aug 13 Python
python实现剪切功能
Jan 23 Python
pandas实现to_sql将DataFrame保存到数据库中
Jul 03 Python
Python 计算任意两向量之间的夹角方法
Jul 05 Python
python config文件的读写操作示例
Sep 27 Python
python交互模式基础知识点学习
Jun 18 Python
python中如何写类
Jun 29 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
一个程序下载的管理程序(三)
2006/10/09 PHP
php中的观察者模式
2010/03/24 PHP
php中生成随机密码的自定义函数代码
2013/10/21 PHP
ajax+php实现无刷新验证手机号的实例
2017/12/22 PHP
PHP解决高并发的优化方案实例
2020/12/10 PHP
JavaScript 解析读取XML文档 实例代码
2009/07/07 Javascript
jQuery中fadeOut()方法用法实例
2014/12/24 Javascript
分享一个常用的javascript静态类
2014/12/31 Javascript
谈谈JavaScript自定义回调函数
2015/10/18 Javascript
jQuery ajax提交Form表单实例(附demo源码)
2016/04/06 Javascript
微信小程序-横向滑动scroll-view隐藏滚动条
2017/04/20 Javascript
Angular父组件调用子组件的方法
2018/04/02 Javascript
通过函数作用域和块级作用域看javascript的作用域链
2018/08/05 Javascript
微信小程序云开发 生成带参小程序码流程
2019/05/18 Javascript
如何在微信小程序中存setStorage
2019/12/13 Javascript
JavaScript经典案例之简易计算器
2020/08/24 Javascript
python之yield表达式学习
2014/09/02 Python
python统计日志ip访问数的方法
2015/07/06 Python
Python 中的 else详解
2016/04/23 Python
深入解析Python中的descriptor描述器的作用及用法
2016/06/27 Python
Python 使用folium绘制leaflet地图的实现方法
2019/07/05 Python
详解Python是如何实现issubclass的
2019/07/24 Python
通过Python编写一个简单登录功能过程解析
2019/09/04 Python
Python-opencv 双线性插值实例
2020/01/17 Python
Python实现电视里的5毛特效实例代码详解
2020/05/15 Python
keras导入weights方式
2020/06/12 Python
基于pycharm 项目和项目文件命名规则的介绍
2021/01/15 Python
德国百年厨具品牌WMF美国站:WMF美国
2016/09/12 全球购物
Giuseppe Zanotti美国官方网站:将鞋履视为高级时装般精心制作
2018/02/06 全球购物
软环境建设心得体会
2014/09/09 职场文书
党的群众路线教育实践活动教师自我剖析材料
2014/10/09 职场文书
2015元旦联欢晚会结束语
2014/12/14 职场文书
运动会宣传稿100字
2015/07/23 职场文书
车辆管理制度范本
2015/08/05 职场文书
学生会部长竞选稿
2015/11/19 职场文书
解决Swagger2返回map复杂结构不能解析的问题
2021/07/02 Java/Android