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 26 Python
连接Python程序与MySQL的教程
Apr 29 Python
python下paramiko模块实现ssh连接登录Linux服务器
Jun 03 Python
Python结巴中文分词工具使用过程中遇到的问题及解决方法
Apr 15 Python
python爬虫获取京东手机图片的图文教程
Dec 29 Python
keras获得某一层或者某层权重的输出实例
Jan 24 Python
python3 sorted 如何实现自定义排序标准
Mar 12 Python
Python GUI编程学习笔记之tkinter界面布局显示详解
Mar 30 Python
使用python处理题库表格并转化为word形式的实现
Apr 14 Python
Python单元测试及unittest框架用法实例解析
Jul 09 Python
Python自动化爬取天眼查数据的实现
Jun 15 Python
python使用torch随机初始化参数
Mar 22 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文件操作相关类实例
2015/06/18 PHP
php封装的表单验证类完整实例
2016/10/19 PHP
windows 2008r2+php5.6.28环境搭建详细过程
2019/06/18 PHP
js 事件小结 表格区别
2007/08/13 Javascript
网页开发中的容易忽略的问题 javascript HTML中的table
2009/04/15 Javascript
Javascript 两个窗体之间传值实现代码
2009/09/25 Javascript
Jquery实现点击切换图片并隐藏显示内容(2种方法实现)
2013/04/11 Javascript
Nodejs学习item【入门手上】
2016/05/05 NodeJs
AngularJS入门教程之与服务器(Ajax)交互操作示例【附完整demo源码下载】
2016/11/02 Javascript
JS回调函数简单用法示例
2017/02/09 Javascript
微信小程序实现点击按钮修改view标签背景颜色功能示例【附demo源码下载】
2017/12/06 Javascript
基于Axios 常用的请求方法别名(详解)
2018/03/13 Javascript
Element input树型下拉框的实现代码
2018/12/21 Javascript
ES6 Generator函数的应用实例分析
2019/06/26 Javascript
js表达式与运算符简单操作示例
2020/02/15 Javascript
python处理圆角图片、圆形图片的例子
2014/04/25 Python
进一步探究Python中的正则表达式
2015/04/28 Python
Python的Django框架下管理站点的基本方法
2015/07/17 Python
python中模块查找的原理与方法详解
2017/08/11 Python
Django中的Model操作表的实现
2018/07/24 Python
Python3多线程版TCP端口扫描器
2019/08/31 Python
python画微信表情符的实例代码
2019/10/09 Python
解决Python命令行下退格,删除,方向键乱码(亲测有效)
2020/01/16 Python
基于python3.7利用Motor来异步读写Mongodb提高效率(推荐)
2020/04/29 Python
eDreams澳大利亚:预订机票、酒店和度假产品
2017/04/19 全球购物
师范毕业生求职自荐信
2013/09/25 职场文书
会计应聘求职信范文
2013/12/17 职场文书
应用化学专业职业生涯规划书
2013/12/31 职场文书
《月光启蒙》教学反思
2014/03/01 职场文书
中学学校门卫岗位职责
2014/08/15 职场文书
幼儿园端午节活动方案
2014/08/25 职场文书
2015学校图书管理员工作总结
2015/05/11 职场文书
好员工观后感
2015/06/17 职场文书
诉讼和解协议书
2016/03/23 职场文书
SpringCloud Feign请求头删除修改的操作代码
2022/03/20 Java/Android