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常见文件操作的函数示例代码
Nov 15 Python
python制作花瓣网美女图片爬虫
Oct 28 Python
django文档学习之applications使用详解
Jan 29 Python
解决pandas 作图无法显示中文的问题
May 24 Python
Python 一键制作微信好友图片墙的方法
May 16 Python
Python 二叉树的层序建立与三种遍历实现详解
Jul 29 Python
Flask框架实现的前端RSA加密与后端Python解密功能详解
Aug 13 Python
解决python3 requests headers参数不能有中文的问题
Aug 21 Python
Tensorflow的常用矩阵生成方式
Jan 04 Python
Python+OpenCV实现图像的全景拼接
Mar 05 Python
windows python3安装Jupyter Notebooks教程
Apr 13 Python
win10+anaconda安装yolov5的方法及问题解决方案
Apr 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
如何利用php+mysql保存和输出文件
2006/10/09 PHP
解析PHPExcel使用的常用说明以及把PHPExcel整合进CI框架的介绍
2013/06/24 PHP
PHP版本如何选择?应该使用哪个版本?
2015/05/13 PHP
分享一个漂亮的php验证码类
2016/09/29 PHP
Thinkphp 框架扩展之驱动扩展实例分析
2020/04/27 PHP
jQuery 操作XML入门
2008/12/25 Javascript
Extjs Ajax 乱码问题解决方案
2009/04/15 Javascript
JS去除字符串的空格增强版(可以去除中间的空格)
2009/08/26 Javascript
jQuery控制输入框只能输入数值的小例子
2013/03/20 Javascript
Jquery each方法跳出循环,并获取返回值(实例讲解)
2013/12/12 Javascript
js判断文本框剩余可输入字数的方法
2015/02/04 Javascript
jQuery实现简单的文件上传进度条效果
2020/03/26 Javascript
基于jquery实现图片放大功能
2016/05/07 Javascript
jquery插件方式实现table查询功能的简单实例
2016/06/06 Javascript
聊一聊JS中this的指向问题
2016/06/17 Javascript
详解vue项目首页加载速度优化
2017/10/18 Javascript
解决nuxt页面中mounted、created、watch执行两遍的问题
2020/11/05 Javascript
vue-axios同时请求多个接口 等所有接口全部加载完成再处理操作
2020/11/09 Javascript
详解Vue的异步更新实现原理
2020/12/22 Vue.js
Python的Flask框架中SQLAlchemy使用时的乱码问题解决
2015/11/07 Python
python shell根据ip获取主机名代码示例
2017/11/25 Python
python3+PyQt5实现自定义分数滑块部件
2018/04/24 Python
Python字符串的全排列算法实例详解
2019/01/07 Python
pandas factorize实现将字符串特征转化为数字特征
2019/12/19 Python
html5教程调用绘图api画简单的圆形代码分享
2013/12/04 HTML / CSS
美国生日蛋糕店:Bake Me A Wish!
2017/02/08 全球购物
Scotch Porter官方网站:男士美容产品
2020/08/31 全球购物
你们项目是如何进行变更控制的
2015/08/26 面试题
美术国培研修感言
2014/02/12 职场文书
优秀学生党员先进事迹材料
2014/05/29 职场文书
开展读书活动总结
2014/06/30 职场文书
实习单位证明范例
2014/11/17 职场文书
学生会生活部工作总结2015
2015/03/31 职场文书
我的1919观后感
2015/06/03 职场文书
浪漫婚礼主持词开场白
2015/11/24 职场文书
python 如何用map()函数创建多线程任务
2021/04/07 Python