在这篇文章中介绍了“Python的闭包与nonlocal”的用法,因为nonlocal是在Python3.0中新增的关键字,python2.x不提供支持,文中提出在Python2.x解决嵌套函数引用外部变量的方法只有使用global 关键字定义全局变量,另一种可行的解决方案是使用列表或字典代替要操作的关键字。

示例如下:

1.python3.0 使用nonlocal关键字>>> def outer():

x = 1

def inner():

nonlocal x

x = 2

print("inner:", x)

inner()

print("outer:", x)

>>> outer()

inner: 2

outer: 2

2.python2.x 借助list或dict实现>>> def outer():

x = [1]

def inner():

x[0] += 1 #修改x[0]保存的值

print("inner:", x[0])

inner()

print("outer:", x[0])

>>> outer()

inner: 2

outer: 2

更多参考资料:

1. http://stackoverflow.com/questions/1261875/python-nonlocal-statement

2.javascript中作用域链定义与python作用域的异同

3.官方文档:

“The nonlocal statement causes the listed identifiers to refer to previously bound variables in the nearest enclosing scope. This is important because the default behavior for binding is to search the local namespace first. The statement allows encapsulated code to rebind variables outside of the local scope besides the global (module) scope.

Names listed in a nonlocal statement, unlike to those listed in a global statement, must refer to pre-existing bindings in an enclosing scope (the scope in which a new binding should be created cannot be determined unambiguously).

Names listed in a nonlocal statement must not collide with pre-existing bindings in the local scope.“

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

python中nonlocal是什么意思_Python中nonlocal关键字相关推荐

  1. Python基础_第3章_Python中的循环结构

    Python基础_第3章_Python中的循环结构 文章目录 Python基础_第3章_Python中的循环结构 Python中的循环结构 一.回顾分支练习题 1.判断是否为一个合法三角形 2.求世界 ...

  2. Python基础_第5章_Python中的数据序列

    Python基础_第5章_Python中的数据序列 文章目录 Python基础_第5章_Python中的数据序列 Python中的数据序列 一.字典--Python中的==查询==神器 1.为什么需要 ...

  3. python post与get的区别_python中get和post有什么区别

    更多编程教程请到:菜鸟教程 https://www.piaodoo.com/ 友情链接: 高州阳光论坛https://www.hnthzk.com/ 人人影视http://www.sfkyty.com ...

  4. python深复制与浅复制_Python中的深拷贝和浅拷贝详解

    要说清楚Python中的深浅拷贝,需要搞清楚下面一系列概念: 变量-引用-对象(可变对象,不可变对象)-切片-拷贝(浅拷贝,深拷贝) [变量-对象-引用] 在Python中一切都是对象,比如说:3, ...

  5. python运行mcmc为何老出错_python中mcmc方法的实现

    MCMC方法在贝叶斯统计中运用很多,MIT发布的EMCEE是实现的比较好的.介绍页面在下面.源代码中examples里的代码可以帮助理解各种功能,特别是line.py 列出了最小二乘法,最大似然法和M ...

  6. python实例属性与类属性_Python中的类属性和实例属性引发的一个坑-续

    上篇文章Python 中的类属性和实例属性,我们探讨了类属性和实例属性引发的一个小坑.总结了类属性和实例属性的区别如下:类属性可以被类和实例调用,实例属性只能被实例调用 类属性不会随着实例的调用而改变 ...

  7. python计算数组元素的和_python中数组的运算

    Python中进行数组的运算需要调用NumPy包. 其官网是:http://www.numpy.org/​www.numpy.org NumPy是Python语言的一个扩充程序库.它支持高级大量的维度 ...

  8. python中格式化字符串的作用_python中字符串格式化的意义(化妆)

    格式 描述 %%百分号标记 #就是输出一个% %c字符及其ASCII码 %s字符串 %d有符号整数(十进制) %u无符号整数(十进制) %o无符号整数(八进制) %x无符号整数(十六进制) %X无符号 ...

  9. python中 r是什么意思_python中rb含义理解

    Python文件读写的几种模式: r,rb,w,wb 那么在读写文件时,有无b标识的的主要区别在哪里呢? 文件使用方式标识 'r':默认值,表示从文件读取数据 'w':表示要向文件写入数据,并截断以前 ...

最新文章

  1. 安装Linux双系统取消快速启动,为什么在双启动时禁用Windows 8上的快速启动?
  2. 快手2020校园招聘秋招笔试--工程B试卷
  3. python学习之正则表达式练习:编写一个计算器
  4. 网站底部添加访客阅读次数总访问量在线人数代码
  5. 不搞虚的!快速把你拉入Docker 的门里
  6. 5、利用控件TVCLZip和TIdFTP压缩文件并上传到FTP的线程单元pas 改进版
  7. 基于Django图书管理系统设计与实践
  8. oracle 英文 简历,免费英文简历范文模板
  9. 如何快速撰写/总结国内外研究现状?
  10. java font好看的字体_二十款漂亮的CSS字体样式
  11. Markdown字体,字号,颜色和背景色设置
  12. 计算机网络与云技术计算,计算机网络云计算技术(原稿)
  13. Vertica中的projections
  14. 3d计算机原理,3d的技术原理有哪些
  15. ora-07445 oracle 9,遇到ORA-07445错误
  16. 边缘计算初探:什么是边缘计算,它能做什么?
  17. Dockers(六)- Docker镜像使用
  18. vs添加码云远程_用VS2017上传项目到码云gitee.com和基本命令
  19. 操作系统--时间片轮转调度算法(RR算法)
  20. DNS协议 : RFC1035 中文

热门文章

  1. linux搭建seafile_CentOS7+seafile搭建私有云盘测试过程记录
  2. 法拉第是如何利用磁铁产生电流的呢?
  3. 卷积神经网络CNN图解
  4. Bongo Cat桌面小猫:适用于玩游戏的版本
  5. java实现数据的Excel导出, 自定义导出字段, 转换字典值
  6. 关于新建一个servlet却跳转显示空白画面的问题
  7. 怎样编写裸片启动程序-ARMv8的Boot Code和ROM程序
  8. QT moveToThread线程理解
  9. Python之reverse函数
  10. ASCII码 or 正则表达式 匹配数字