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使用MySQLdb for Python操作数据库教程
Oct 11 Python
django开发之settings.py中变量的全局引用详解
Mar 29 Python
解决Linux系统中python matplotlib画图的中文显示问题
Jun 15 Python
python Web开发你要理解的WSGI &amp; uwsgi详解
Aug 01 Python
pycharm设置鼠标悬停查看方法设置
Jul 29 Python
详解Matplotlib绘图之属性设置
Aug 23 Python
Python matplotlib绘制饼状图功能示例
Sep 10 Python
python实现画循环圆
Nov 23 Python
Python如何使用函数做字典的值
Nov 30 Python
Pytorch的mean和std调查实例
Jan 02 Python
python将logging模块封装成单独模块并实现动态切换Level方式
May 12 Python
Python如何执行精确的浮点数运算
Jul 31 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中钩子(hook)的原理与简单应用demo示例
2019/09/03 PHP
PHP var关键字相关原理及使用实例解析
2020/07/11 PHP
suggestion开发小结以及对键盘事件的总结(针对中文输入法状态)
2011/12/20 Javascript
Jquery 动态循环输出表格具体方法
2013/11/23 Javascript
Javascript中引用示例介绍
2014/02/21 Javascript
jquery事件preventDefault()方法用法实例
2015/01/16 Javascript
jQuery的position()方法详解
2015/07/19 Javascript
纯JS实现可拖拽表单的简单实例
2016/09/02 Javascript
JQuery控制DIV的选取实现方法
2016/09/18 Javascript
移动端界面的适配
2017/01/11 Javascript
Vee-Validate的使用方法详解
2017/09/22 Javascript
微信小程序录音与播放录音功能
2017/12/25 Javascript
Vue仿今日头条实例详解
2018/02/06 Javascript
JavaScript中变量、指针和引用功能与操作示例
2018/08/04 Javascript
vue侧边栏动态生成下级菜单的方法
2018/09/07 Javascript
vue项目首屏加载时间优化实战
2019/04/23 Javascript
vue3.0中使用postcss-pxtorem的具体方法
2019/11/20 Javascript
如何在 Vue 表单中处理图片
2021/01/26 Vue.js
[00:12]2018DOTA2亚洲邀请赛SOLO赛 MidOne是否中单第一人?
2018/04/05 DOTA
python类参数self使用示例
2014/02/17 Python
Python中的测试模块unittest和doctest的使用教程
2015/04/14 Python
使用python调用zxing库生成二维码图片详解
2017/01/10 Python
python select.select模块通信全过程解析
2017/09/20 Python
python使用tkinter实现简单计算器
2018/01/30 Python
python+pygame实现坦克大战
2019/09/10 Python
python爬虫beautifulsoup解析html方法
2020/12/07 Python
HTML5为输入框添加语音输入功能的实现方法
2017/02/06 HTML / CSS
const char*, char const*, char*const的区别是什么
2014/07/09 面试题
农民工工资支付承诺函
2014/03/31 职场文书
知识改变命运演讲稿
2014/05/21 职场文书
离职证明标准格式
2014/09/15 职场文书
大学生推广普通话演讲稿
2014/09/21 职场文书
入团介绍人意见范文
2015/06/04 职场文书
中学生国庆节演讲稿2015
2015/07/30 职场文书
Windows 11要来了?微软文档揭示Win11太阳谷 / Win10有两个不同版本
2021/11/21 数码科技
nginx sticky实现基于cookie负载均衡示例详解
2022/12/24 Servers