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 splitlines使用技巧
Sep 06 Python
在Python中使用成员运算符的示例
May 13 Python
Python 加密的实例详解
Oct 09 Python
Python实现希尔排序算法的原理与用法实例分析
Nov 23 Python
Django中使用CORS实现跨域请求过程解析
Aug 05 Python
Django Docker容器化部署之Django-Docker本地部署
Oct 09 Python
在Python中使用turtle绘制多个同心圆示例
Nov 23 Python
pytorch构建多模型实例
Jan 15 Python
python的Jenkins接口调用方式
May 12 Python
python使用matplotlib绘制折线图的示例代码
Sep 22 Python
关于python3.9安装wordcloud出错的问题及解决办法
Nov 02 Python
python 怎样进行内存管理
Nov 10 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 长文章分页函数 带使用方法,不会分割段落,翻页在底部
2009/10/22 PHP
优化php效率,提高php性能的一些方法
2011/03/24 PHP
PHP中register_globals参数为OFF和ON的区别(register_globals 使用详解)
2012/02/05 PHP
浅析PHP页面局部刷新功能的实现小结
2013/06/21 PHP
thinkphp区间查询、统计查询与SQL直接查询实例分析
2014/11/24 PHP
php实现支持中文的文件下载功能示例
2017/08/30 PHP
PHP自定义序列化接口Serializable用法分析
2017/12/29 PHP
javascript的键盘控制事件说明
2008/04/15 Javascript
Javascript笔记一 js以及json基础使用说明
2010/05/22 Javascript
Javascript(AJAX)解析XML的代码(兼容FIREFOX/IE)
2010/07/11 Javascript
jquery easyui中treegrid用法的简单实例
2014/02/18 Javascript
JavaScript实现函数返回多个值的方法
2015/06/09 Javascript
jQuery获取字符串中出现最多的数
2016/02/22 Javascript
jQuery添加和删除输入文本框标签代码
2016/05/20 Javascript
vue.js实现表格合并示例代码
2016/11/30 Javascript
JavaScript 事件流、事件处理程序及事件对象总结
2017/04/01 Javascript
vue实现手机号码抽奖上下滚动动画示例
2017/10/18 Javascript
Vue+webpack项目基础配置教程
2018/02/12 Javascript
微信小程序自定义组件之可清除的input组件
2018/07/17 Javascript
解决vue keep-alive 数据更新的问题
2018/09/21 Javascript
vue中设置、获取、删除cookie的方法
2018/09/21 Javascript
使用Easyui实现查询条件的后端传递并自动刷新表格的两种方法
2019/09/09 Javascript
vue项目引入ts步骤(小结)
2019/10/31 Javascript
[02:01]2018完美盛典-开场舞《双子星》
2018/12/16 DOTA
python发送邮件接收邮件示例分享
2014/01/21 Python
通过数据库对Django进行删除字段和删除模型的操作
2015/07/21 Python
Python随机函数库random的使用方法详解
2019/08/21 Python
对tensorflow 中tile函数的使用详解
2020/02/07 Python
python怎么调用自己的函数
2020/07/01 Python
基于Python pyecharts实现多种图例代码解析
2020/08/10 Python
传统HTML页面实现模块化加载的方法
2018/10/15 HTML / CSS
大学校庆邀请函
2014/01/11 职场文书
爱国演讲稿400字
2014/05/07 职场文书
幼儿园户外活动总结
2014/07/04 职场文书
还款承诺书范本
2015/01/20 职场文书
2015年客房服务员工作总结
2015/05/15 职场文书