Python笔记之nonlocal语句
nonlocal语句
nonlocal语句和global是近亲。它和global的不同之处在于,nonlocal应用于一个嵌套的函数的作用域中修改名称,而不是所有def之外的全局模块作用域;而且在声明nonlocal名称的时候,它必须已经存在于该嵌套函数的作用域中——它们可能只存在于嵌套的函数中,并且不能由一个嵌套的def中的第一次赋值创建。
nonlocal应用
我们先来看一些nonlocal的例子
#示例1
>>> def tester(start):
... state = start
... def nested(label):
... print(label,state)
... return nested
...
>>> F = tester(0)
>>> F('spam')
spam 0#尝试在嵌套的def内修改state
>>> def tester(start):
... state = start
... def nested(label):
... print(label,state)
... state += 1
... return nested
...
>>> F = tester(0)
>>> F('spam')
Traceback (most recent call last):File "<stdin>", line 1, in <module>File "<stdin>", line 4, in nested
UnboundLocalError: local variable 'state' referenced before assignment
使用nonlocal进行修改后:
#示例2
>>> def tester(start):
... state = start
... def nested(label):
... nonlocal state
... print(label,state)
... state += 1
... return nested
...
>>> F = tester(0)
>>> F('spam')
spam 0
>>> F('ham')
ham 1
>>> F('YAMAHA')
YAMAHA 2
>>> G = tester(45)
>>> G('China')
China 45
>>> F('re')
re 3
注意:
- nonlocal语句允许在内存中保存可变状态的副本,并且解决了在类无法保证的情况下简单的状态保存。(在示例2中有这样的体现)
- 当执行一条nonlocal语句时,nonlocal名称必须已经在一个嵌套的def作用域中赋值过,否则将会得到一个错误——不能通过在嵌套的作用域给它们一个新值来创建它们(即边界情况)
Python笔记之nonlocal语句相关推荐
- Python笔记6——判断语句
判断语句 定义 if语句 2.1 if判断语句基本语法 2.2练习 2.3 else处理条件不满足的情况 2.4 练习--判断年龄改进 3 进阶 3.1elif 3.2 练习 3.3 if嵌套 3.4 ...
- python笔记之if语句及嵌套浅析
if条件判断语句 语法格式: if条件: 逻辑代码 else: 其他逻辑代码 示例: day = input("今天星期几:") day = int(day) if day< ...
- python中if语句使用_Python学习笔记之if语句的使用示例
前言 条件语句在实际开发中我们已经使用过几次了,在这里我们需要再次隆重的来介绍一下它,下面话不多说了,来一起看看详细的介绍吧. if语句 顾名思义,该语句为判断语句,先来一个简单的示例 cars=[' ...
- Python初学笔记1-【循环语句】
Python循环语句 主要是菜鸟教程Python基础教程随学笔记,本章节是讲解Python的循环语句部分.https://www.runoob.com/python/python-loops.html ...
- Python学习笔记之if语句(一)
1.if语句简单描述 在 Python中,if语句让你能够检查程序的当前状态,然后对这这种状态做对应相关的措施,如果怎样,那就怎样,示例代码如下: #if简单测试代码sexs = ['男','女']; ...
- 【python学习笔记】python运算符以及简单语句
python运算符以及简单语句 1.布尔类型 bool类型的值:True 1 和 False 0 可进行四则运算 注意首字母大写 1.1比较运算 比较两个对象: • 符号:>, < =, ...
- Python笔记(4) 关键字
Python笔记(4) 关键字 1. 关键字 2. True与False 3. None 4. and,or与not 5. assert 6. await与async 7. for/while,con ...
- Python笔记【八】
本文为博主原创,未经许可严禁转载. 本文链接:https://blog.csdn.net/zyooooxie/article/details/108095932 Python笔记的博客 很久很久很久没 ...
- Python笔记(1-20)
Python笔记(1-20) 习题等资源来源于网络,本人只是在此收集整理,如有版权问题,归小甲鱼所属.小甲鱼:https://ilovefishc.com/ 第 1 课 1.Python 是什么类型的 ...
最新文章
- Qt 小技巧之“To-Do 事项”
- 基本类型和引用类型的传值
- python Selenium 常见操作 元素定位
- 请解释为什么集合类没有实现Cloneable和Serializable接口?
- cors跨域_Nginx通过CORS配置实现跨域访问
- Android 省份城市搜索,android - 非常不错的 城市省份的选择组件: citypicker
- Iverson Bracket. 艾弗森括号
- CMU黑科技,手机录视频,实现人脸3D建模的高度逼真
- 实现后台高级查询(高级版)
- SpringBoot进阶教程 | 第四篇:整合Mybatis实现多数据源
- 判断是否包含某个头文件
- 论软件产品的易用性(二)
- Win10下安装python和pycharm
- scrapy分布式写入到mysql_scrapy-redis分布式爬虫去重异步写入mysql数据库实例代码...
- 3DMax2014试用结束后激活教程
- 阿里巴巴常用的 12 个后端开发工具,建议你快快收藏!
- 每日新闻:腾讯与Line携手在日本提供移动支付服务;阿里组织架构调整 行癫任阿里云智能总裁;每周要工作80小时才有可能改变世界...
- 计算机导论 宋斌,宋斌(计算机科学与技术学院)老师 - 南京理工大学 - 院校大全...
- python爬取qq音乐歌词风变编程_风变编程的Python课,让我离掌握编程又进了一步...
- python编程好学吗-零基础可以学会python吗?python好学吗?
热门文章
- 【爬虫】QQ空间照片下载
- C++:刷LeetCode踩过的坑
- 给 element-ui 表格的表头添加icon图标
- java char unicode_在Java的基本数据类型中,char型采用Unicode编码方案,每个Unicode码占用______字节内存空间,这样,无论是中文_搜题易...
- 【转载】random的常用函数
- CI框架学习笔记第三天
- frid 开发_健永科技智能盘点RFID软件接口开发
- 从卖咖啡到做教育,十岁的知乎“折腾”在赚钱路上
- 道路重建(C++,Dijkstra)
- 为什么说可追溯性非常重要?