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 相关文章推荐
pygame学习笔记(5):游戏精灵
Apr 15 Python
Python编程之微信推送模板消息功能示例
Aug 21 Python
Python即时网络爬虫项目启动说明详解
Feb 23 Python
解决Python一行输出不显示的问题
Dec 03 Python
numpy linalg模块的具体使用方法
May 26 Python
python 中pyqt5 树节点点击实现多窗口切换问题
Jul 04 Python
Python实用库 PrettyTable 学习笔记
Aug 06 Python
python实现邮件自动发送
Aug 10 Python
Python使用Opencv实现图像特征检测与匹配的方法
Oct 30 Python
TensorFlow 读取CSV数据的实例
Feb 05 Python
解决Python 异常TypeError: cannot concatenate 'str' and 'int' objects
Apr 08 Python
pandas读取csv文件提示不存在的解决方法及原因分析
Apr 21 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删除文本文件中重复行的方法
2015/04/28 PHP
thinkPHP使用pclzip打包备份mysql数据库的方法
2016/04/30 PHP
PHP 接入支付宝即时到账功能
2016/09/18 PHP
PHP7新增运算符用法实例分析
2016/09/26 PHP
php的laravel框架快速集成微信登录的方法
2016/12/12 PHP
深入理解JavaScript系列(7) S.O.L.I.D五大原则之开闭原则OCP
2012/01/15 Javascript
js如何获取兄弟、父类等节点
2014/01/06 Javascript
js判断为空Null与字符串为空简写方法
2014/02/24 Javascript
IE6浏览器中window.location.href无效的解决方法
2014/11/20 Javascript
全屏js头像上传插件源码高清版
2016/03/29 Javascript
javascript中去除数组重复元素的实现方法【实例】
2016/04/12 Javascript
深入理解ECMAScript的几个关键语句
2016/06/01 Javascript
AngularJS优雅的自定义指令
2016/07/01 Javascript
node.js学习之base64编码解码
2016/10/21 Javascript
javascript显示系统当前时间代码
2016/12/29 Javascript
js将字符串中的每一个单词的首字母变为大写其余均为小写
2017/01/05 Javascript
BootStrap select2 动态改变值的方法
2017/02/10 Javascript
详解关于html,css,js三者的加载顺序问题
2019/04/10 Javascript
JavaScript生成随机验证码代码实例
2019/09/28 Javascript
Node.js API详解之 tty功能与用法实例分析
2020/04/27 Javascript
解决Vue项目中tff报错的问题
2020/10/21 Javascript
Python求两个list的差集、交集与并集的方法
2014/11/01 Python
Python3安装Pymongo详细步骤
2017/05/26 Python
python读取文件名并改名字的实例
2019/01/07 Python
基于Python的PIL库学习详解
2019/05/10 Python
django url到views参数传递的实例
2019/07/19 Python
使用Python刷淘宝喵币(低阶入门版)
2019/10/30 Python
python实现大战外星人小游戏实例代码
2019/12/26 Python
普罗米修斯教学反思
2014/02/06 职场文书
五水共治一句话承诺
2014/05/30 职场文书
高三霸气励志标语
2014/06/24 职场文书
2014党员学习兰辉先进事迹思想汇报
2014/09/17 职场文书
售后前台接待岗位职责
2015/04/03 职场文书
培根随笔读书笔记
2015/07/01 职场文书
教你如何使用Python开发一个钉钉群应答机器人
2021/06/21 Python
如何通过cmd 连接阿里云服务器
2022/04/18 Servers