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 24 Python
pycharm: 恢复(reset) 误删文件的方法
Oct 22 Python
pygame游戏之旅 调用按钮实现游戏开始功能
Nov 21 Python
python中的RSA加密与解密实例解析
Nov 18 Python
opencv3/C++图像像素操作详解
Dec 10 Python
利用Pytorch实现简单的线性回归算法
Jan 15 Python
Python爬虫实现百度翻译功能过程详解
May 29 Python
PyTorch的torch.cat用法
Jun 28 Python
python3环境搭建过程(利用Anaconda+pycharm)完整版
Aug 19 Python
Python2与Python3关于字符串编码处理的差别总结
Sep 07 Python
Python 求向量的余弦值操作
Mar 04 Python
Python实现查询剪贴板自动匹配信息的思路详解
Jul 09 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
PHP5 安装方法
2006/10/09 PHP
PHP MVC模式在网站架构中的实现分析
2010/03/04 PHP
解析:通过php socket并借助telnet实现简单的聊天程序
2013/06/18 PHP
php编写的一个E-mail验证类
2015/03/25 PHP
php实现生成PDF文件的方法示例【基于FPDF类库】
2018/07/21 PHP
分享14个很酷的jQuery导航菜单插件
2011/04/25 Javascript
移动设备web开发首选框架:zeptojs介绍
2015/01/29 Javascript
js实现正则匹配中文标点符号的方法
2015/12/23 Javascript
微信小程序(应用号)简单实例应用及实例详解
2016/09/26 Javascript
jquery Easyui Datagrid实现批量操作(编辑,删除,添加)
2017/02/20 Javascript
jQuery Ajax前后端使用JSON进行交互示例
2017/03/17 Javascript
Nodejs中crypto模块的安全知识讲解
2018/01/03 NodeJs
JavaScript实现数组全排列、去重及求最大值算法示例
2018/07/30 Javascript
使用JavaScript保存文本文件到本地的两种方法
2019/01/22 Javascript
jQuery使用ajax传递json对象到服务端及contentType的用法示例
2020/03/12 jQuery
JQuery获得内容和属性方法解析
2020/05/30 jQuery
js实现翻牌小游戏
2020/07/31 Javascript
js实现特别简单的钟表效果
2020/09/14 Javascript
Python中的localtime()方法使用详解
2015/05/22 Python
在Python的Django框架中simple-todo工具的简单使用
2015/05/30 Python
Python 解决中文写入Excel时抛异常的问题
2018/05/03 Python
python读取图片并修改格式与大小的方法
2018/07/24 Python
python在openstreetmap地图上绘制路线图的实现
2019/07/11 Python
在pycharm中配置Anaconda以及pip源配置详解
2019/09/09 Python
Python Django中间件,中间件函数,全局异常处理操作示例
2019/11/08 Python
python之pymysql模块简单应用示例代码
2019/12/16 Python
欧舒丹英国官网:购买欧舒丹护手霜等明星产品
2017/01/17 全球购物
奥地利购买珠宝和手表网站:ELLA JUWELEN
2019/09/03 全球购物
Harman Audio官方商店:购买JBL、Harman Kardon、Infinity和AKG
2019/12/05 全球购物
中专自荐信
2013/10/13 职场文书
总裁岗位职责
2013/12/04 职场文书
党的群众路线个人对照检查材料
2014/09/23 职场文书
2014院党委领导班子及其成员群众路线对照检查材料思想汇报
2014/10/04 职场文书
2014年党委工作总结
2014/11/22 职场文书
行政介绍信范文
2015/05/04 职场文书
惊涛骇浪观后感
2015/06/05 职场文书