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 NumPy库安装使用笔记
May 18 Python
深入理解Python单元测试unittest的使用示例
Nov 18 Python
轻松实现TensorFlow微信跳一跳的AI
Jan 05 Python
TensorFlow深度学习之卷积神经网络CNN
Mar 09 Python
tensorflow 加载部分变量的实例讲解
Jul 27 Python
python对日志进行处理的实例代码
Oct 06 Python
python 进程的几种创建方式详解
Aug 29 Python
详解使用Python下载文件的几种方法
Oct 13 Python
PyCharm导入python项目并配置虚拟环境的教程详解
Oct 13 Python
python将数组n等分的实例
Dec 02 Python
opencv3/C++图像像素操作详解
Dec 10 Python
Python unittest单元测试框架实现参数化
Apr 29 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 UTF-8、Unicode和BOM问题
2010/05/18 PHP
PHP判断是否连接上网络的方法
2015/07/01 PHP
浅谈PHP中output_buffering
2015/07/13 PHP
PHP使用Memcache时模拟命名空间及缓存失效问题的解决
2016/02/27 PHP
PHP自定义序列化接口Serializable用法分析
2017/12/29 PHP
实现php删除链表中重复的结点
2018/09/27 PHP
当json键为数字时的取值方法解析
2013/11/15 Javascript
laytpl 精致巧妙的JavaScript模板引擎
2014/08/29 Javascript
IE6浏览器中window.location.href无效的解决方法
2014/11/20 Javascript
JS判断是否360安全浏览器极速内核的方法
2015/01/29 Javascript
jQuery实现模拟marquee标签效果
2015/07/14 Javascript
jQuery插件Validate实现自定义校验结果样式
2016/01/18 Javascript
javaScript给元素添加多个class的简单实现
2016/07/20 Javascript
javascript滚轮事件基础实例讲解(37)
2017/02/14 Javascript
使用jQuery操作DOM的方法小结
2017/02/27 Javascript
angular4中关于表单的校验示例
2017/10/16 Javascript
react.js组件实现拖拽复制和可排序的示例代码
2018/08/20 Javascript
vue-cli 3.x配置跨域代理的实现方法
2019/04/12 Javascript
详谈Vue.js框架下main.js,App.vue,page/index.vue之间的区别
2020/08/12 Javascript
如何通过Proxy实现JSBridge模块化封装
2020/10/22 Javascript
Element-ui upload上传文件限制的解决方法
2021/01/22 Javascript
windows系统中python使用rar命令压缩多个文件夹示例
2014/05/06 Python
Python检测字符串中是否包含某字符集合中的字符
2015/05/21 Python
python开发利器之ulipad的使用实践
2017/03/16 Python
python并发和异步编程实例
2018/11/15 Python
Python中单线程、多线程和多进程的效率对比实验实例
2019/05/14 Python
python找出因数与质因数的方法
2019/07/25 Python
pandas如何处理缺失值
2019/07/31 Python
python打印n位数“水仙花数”(实例代码)
2019/12/25 Python
英国骑行、跑步、游泳、铁人三项运动装备专卖店:Wiggle
2016/08/23 全球购物
家长写给孩子的评语
2014/04/18 职场文书
党支部考察意见范文
2015/06/02 职场文书
2016教师国培研修感言
2015/12/08 职场文书
2019入党申请书格式
2019/06/25 职场文书
小学生一年级(书信作文)
2019/08/13 职场文书
Java完整实现记事本代码
2022/06/16 Java/Android