Python作用域用法实例详解


Posted in Python onMarch 15, 2016

本文实例分析了Python作用域用法。分享给大家供大家参考,具体如下:

每一个编程语言都有变量的作用域的概念,Python也不例外,以下是Python作用域的代码演示:

def scope_test():
  def do_local():
    spam = "local spam"
  def do_nonlocal():
    nonlocal spam
    spam = "nonlocal spam"
  def do_global():
    global spam
    spam = "global spam"
  spam = "test spam"
  do_local()
  print("After local assignment:", spam)
  do_nonlocal()
  print("After nonlocal assignment:", spam)
  do_global()
  print("After global assignment:", spam)
scope_test()
print("In global scope:", spam)

程序的输出结果:

After local assignment: test spam
After nonlocal assignment: nonlocal spam
After global assignment: nonlocal spam
In global scope: global spam

注意: local 赋值语句是无法改变 scope_test 的 spam 绑定。 nonlocal 赋值语句改变了 scope_test 的 spam 绑定,并且 global 赋值语句从模块级改变了 spam 绑定。

其中,nonlocal是Python 3新增的关键字。

你也可以看到在 global 赋值语句之前对 spam 是没有预先绑定的。

小结:

遇到在程序中访问全局变量并且要修改全局变量的值的情况可以使用:global关键字,在函数中声明此变量是全局变量

nonlocal关键字用来在函数或其他作用域中使用外层(非全局)变量。

global关键字很好理解,其他语言大体也如此。这里再举一个nonlocal的例子:

def make_counter():
  count = 0
  def counter():
    nonlocal count
    count += 1
    return count
  return counter
def make_counter_test():
 mc = make_counter()
 print(mc())
 print(mc())
 print(mc())

运行结果:

1
2
3

转自:小谈博客 http://www.tantengvip.com/2015/05/python-scope/

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python实现批量转换文件编码(批转换编码示例)
Jan 23 Python
python通过pil模块将raw图片转换成png图片的方法
Mar 16 Python
Python素数检测实例分析
Jun 15 Python
使用Python的Flask框架构建大型Web应用程序的结构示例
Jun 04 Python
Python 12306抢火车票脚本
Feb 07 Python
使用pandas对矢量化数据进行替换处理的方法
Apr 11 Python
对python中Matplotlib的坐标轴的坐标区间的设定实例讲解
May 25 Python
详解django自定义中间件处理
Nov 21 Python
pycharm中导入模块错误时提示Try to run this command from the system terminal
Mar 26 Python
pip安装tensorflow的坑的解决
Apr 19 Python
python如何删除列为空的行
Jul 17 Python
如何查看python关键字
Jan 17 Python
Python的净值数据接口调用示例分享
Mar 15 #Python
Python简单连接MongoDB数据库的方法
Mar 15 #Python
Python函数中的函数(闭包)用法实例
Mar 15 #Python
实例讲解Python中函数的调用与定义
Mar 14 #Python
Python使用multiprocessing实现一个最简单的分布式作业调度系统
Mar 14 #Python
简单讲解Python中的字符串与字符串的输入输出
Mar 13 #Python
深入解析Python中的list列表及其切片和迭代操作
Mar 13 #Python
You might like
PHP实现将视频转成MP4并获取视频预览图的方法
2015/03/12 PHP
PHP.ini安全配置检测工具pcc简单介绍
2015/07/02 PHP
一段利用WSH获取登录时间的jscript代码
2008/05/11 Javascript
JavaScript 对话框和状态栏使用说明
2009/10/25 Javascript
jQuery提交多个表单的小例子
2013/06/30 Javascript
JS和jquery获取各种屏幕的宽度和高度的代码
2013/08/02 Javascript
jquery内置验证(validate)使用方法示例(表单验证)
2013/12/04 Javascript
原生javascript实现无间缝滚动示例
2014/01/28 Javascript
JS实现点击事件统计的简单实例
2016/07/10 Javascript
seajs模块之间依赖的加载以及模块的执行
2016/10/21 Javascript
AngularJS中watch监听用法分析
2016/11/04 Javascript
BootStrap中关于Select下拉框选择触发事件及扩展
2016/11/22 Javascript
原生js实现返回顶部缓冲效果
2017/01/18 Javascript
Nodejs中Express 常用中间件 body-parser 实现解析
2017/05/22 NodeJs
基于JavaScript实现飘落星星特效
2017/08/10 Javascript
Vue中的slot使用插槽分发内容的方法
2018/03/01 Javascript
vue工程全局设置ajax的等待动效的方法
2019/02/22 Javascript
详解javascript对数组和json数组的操作
2019/04/15 Javascript
Vue 2.0双向绑定原理的实现方法
2019/10/23 Javascript
[00:06]Yes,it worked!小卡尔成功穿越时空加入战场!
2019/07/20 DOTA
python函数的5种参数详解
2017/02/24 Python
Python 运行 shell 获取输出结果的实例
2019/01/07 Python
Python3几个常见问题的处理方法
2019/02/26 Python
Django更新models数据库结构步骤
2020/04/01 Python
HTML5中使用postMessage实现Ajax跨域请求的方法
2016/04/19 HTML / CSS
使用useBean标志初始化BEAN时如何接受初始化参数
2012/02/11 面试题
JAVA代码查错题
2014/10/10 面试题
计算机专业学生的自我评价
2013/12/15 职场文书
销售主管的自我评价分享
2014/01/03 职场文书
新三好学生主要事迹
2014/01/23 职场文书
董事长助理岗位职责
2014/02/18 职场文书
环保建议书500字
2014/05/14 职场文书
2015年爱牙日活动总结
2015/02/05 职场文书
劳动保障个人工作总结
2015/03/04 职场文书
SQLServer RANK() 排名函数的使用
2022/03/23 SQL Server
MySQL 数据库范式化设计理论
2022/04/22 MySQL