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中操作列表之List.pop()方法的使用
May 21 Python
Python中的with语句与上下文管理器学习总结
Jun 28 Python
python验证码识别的示例代码
Sep 21 Python
Python中enumerate函数代码解析
Oct 31 Python
Python判断中文字符串是否相等的实例
Jul 06 Python
python中实现字符串翻转的方法
Jul 11 Python
对python中的iter()函数与next()函数详解
Oct 18 Python
python网络应用开发知识点浅析
May 28 Python
python系列 文件操作的代码
Oct 06 Python
解决tensorflow/keras时出现数组维度不匹配问题
Jun 29 Python
python3代码中实现加法重载的实例
Dec 03 Python
PyCharm 光标变成黑块的解决方式
Feb 06 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
德劲1103的维修打理经验
2021/03/02 无线电
php简单提示框alert封装函数
2010/08/08 PHP
php把session写入数据库示例
2014/02/26 PHP
destoon实现公司新闻详细页添加评论功能的方法
2014/07/15 PHP
php建立Ftp连接的方法
2015/03/07 PHP
php面向对象与面向过程两种方法给图片添加文字水印
2015/08/26 PHP
PHP7 mongoDB扩展使用的方法分享
2019/05/02 PHP
laravel框架邮箱认证实现方法详解
2019/11/22 PHP
JavaScript的public、private和privileged模式
2009/12/28 Javascript
javascript中parentNode,childNodes,children的应用详解
2013/12/17 Javascript
基于jquery实现一个滚动的分步注册向导-附源码
2015/08/26 Javascript
JavaScript 对象深入学习总结(经典)
2015/09/29 Javascript
jQuery实现选项卡切换效果简单演示
2015/12/09 Javascript
原生JS封装Ajax插件(同域、jsonp跨域)
2016/05/03 Javascript
最适应的vue.js的form提交涉及多种插件【推荐】
2018/08/27 Javascript
微信小程序自定义音乐进度条的实例代码
2018/08/28 Javascript
对angularJs中2种自定义服务的实例讲解
2018/09/30 Javascript
NodeJs 文件系统操作模块fs使用方法详解
2018/11/26 NodeJs
JS函数进阶之prototy用法实例分析
2020/01/15 Javascript
JavaScript经典案例之简易计算器
2020/08/24 Javascript
Vue.js桌面端自定义滚动条组件之美化滚动条VScroll
2020/12/01 Vue.js
python计数排序和基数排序算法实例
2014/04/25 Python
Python操作SQLite简明教程
2014/07/10 Python
用Python读取几十万行文本数据
2018/12/24 Python
解决Tensorflow 内存泄露问题
2020/02/05 Python
django迁移文件migrations的实现
2020/03/31 Python
Python如何实现FTP功能
2020/05/28 Python
Html5适配iphoneX刘海屏的简单实现
2019/04/09 HTML / CSS
英国家庭珠宝商:T. H. Baker
2018/02/08 全球购物
初中同学聚会感言
2014/02/11 职场文书
法律进企业活动方案
2014/03/04 职场文书
职工宿舍管理制度
2015/08/05 职场文书
工作转正自我鉴定范文
2019/06/21 职场文书
Python代码,能玩30多款童年游戏!这些有几个是你玩过的
2021/04/27 Python
Python合并pdf文件的工具
2021/07/01 Python
十大公认最好看的动漫:《咒术回战》在榜,《钢之炼金术师》第一
2022/03/18 日漫