nonlocal python3_Python3中 对local和nonlocal 关键字的认识
nonlocal关键字用来在函数或其他作用域中使用外层(非全局)变量。
nonlocal用于声明,修改嵌套作用域(enclosing 作用域,外层非全局作用域)中的变量,如下实例:
结果如下:
当时学习的时候对于inner()输出的num值还可以理解,但是对于outer输出的num值就觉得不理解了,为什么不是10,毕竟在outer()里面已经有他自己的局部变量应该不会被修改,后来自己加多测试输出之后就廓然开朗啦了,示例如下:
重新更改代码:
结果:
一看是不是就明白啦,两段代码不同之处只是在变量发生改变之前增加输出结果,从执行顺序看出:
1. 首先输出outer()本局变量num的值:10
2. 调用inner(),用nonlocal声明使用外部变量num(10),因此此时输出的是外部变量outer().num: 10
3. inner()内部生成本局变量num = 100,所以第三次输出的是inner.num的值, 也就是100.
实际上inner内部仅有一个num=100的本局变量,第二次输出的只是在inner函数里输出外部函数的变量的值。
4. 第四次输出的num值是调用了inner()后的num值,实际上inner()里面只有1个num=100的局部变量,因此第四次输出的就是inner().num: 也就是100.
此时重新看第一段代码对比之后就知道为什么输出这样的值了,
最后最后,学习的时候,多思考多加测试数据是真的会帮助理解的哟~
nonlocal python3_Python3中 对local和nonlocal 关键字的认识相关推荐
- nonlocal python3_Python中的global和nonlocal关键字
在进入正题之前先简单说明一下:局部变量:函数或者方法里面定义的变量: 全局变量:本文指module级别的变量(一个python文件就是一个module). global 先看个例子:a = 1 def ...
- nonlocal python3_Python 中的 global、nonlocal 辨析
global 语句 语法:声明此变量为全局变量 用法: global [变量名] 注意:引用全局变量时,不需要global 声明,但是后面使用或者修改这个全局变量的时候,需要global声明. 应用场 ...
- Python3中 对local和nonlocal 关键字的改善认识(新手向)
nonlocal关键字用来在函数或其他作用域中使用外层(非全局)变量. nonlocal用于声明,修改嵌套作用域(enclosing 作用域,外层非全局作用域)中的变量,如下实例: #!/usr/bi ...
- python local_Python3中 对local和nonlocal 关键字的改善认识(新手向)
nonlocal关键字用来在函数或其他作用域中使用外层(非全局)变量. nonlocal用于声明,修改嵌套作用域(enclosing 作用域,外层非全局作用域)中的变量,如下实例: #!/usr/bi ...
- 一个例子带你搞懂python作用域中的global、nonlocal和local
在编程中,只要接触过函数的,我相信都理解什么是全局变量和局部变量,概念比较简单,这里就不做解释了.在python中,用global语句就能将变量定义为全局变量,但是最近又发现有个nonlocal,一时 ...
- 转载:Objective-C中的 instancetype 和 id 关键字
Objective-C中的instancetype和id关键字 作者:wangzz 原文地址:http://blog.csdn.net/wzzvictory/article/details/16994 ...
- Spring中ref local与ref bean区别
为什么80%的码农都做不了架构师?>>> Spring中ref local与ref bean区别 今天在做SSH框架Demo实例时,在ApplicationResources. ...
- C#类方法中使用数组参数params关键字的作用
参数数组(params)关键字可以指定在参数数目可变处采用参数的方法参数. 在方法声明中的 params 关键字之后不允许任何其他参数,并且在方法声明中只允许一个 params 关键字. 先定义一个带 ...
- Java中的synchronized与volatile关键字
原文出处:http://hukai.me/android-training-course-in-chinese/performance/smp/index.html Java中的"synch ...
最新文章
- ActivityGroup 实现分页和自定义标签(内有GridView的点击背景样式的改变方法)
- java oauth server_Spring OAuth2 ResourceServer外部AuthorizationServer
- LB负载均衡集群--LVS
- java sar包_linux下查看最占性能的JAVA进程
- ElasticSearch 文档路由,你的数据到底存在哪一个分片上_06
- 微软开放Windows Phone 7中文开发中心
- 机器人煮面机创始人_煮面机器人会是未来的「食神」吗?
- 《Shell脚本学习指南》笔记--2011-12-17
- xampp修改mysql默认端口需要修改的地方
- 使用驱动器中的光盘之前需要将其格式化怎么办,使用驱动器中的光盘之前需要将其格式化寻回方法
- SpringCloud、RabbitMQ、Websocket集群搭建以及集群通信
- 洛谷----P3717 [AHOI2017初中组]cover
- AI——六(图层、蒙版)
- python控制手机
- 学习笔记(01):【吴刚】PS软件基础实用技巧标准视频教程-04-文件的打开及注意事项...
- 用latex写毕业论文--设置附录、参考文献、致谢环境
- QTP10破解方法及mgn-mqt82.exe下载
- 环信开源计划开启即时通讯云开源平台时代
- 数据永久保存?有人要把资料存月球上
- 文艺中年高晓松成“岛主” 上万册图书免费看
热门文章
- mysql workbench建表时PK,NN,UQ,BIN,UN,ZF,AI
- 8. String to Integer (atoi)
- Js中的callback机制
- Transact SQL 常用语句以及函数
- LeetCode 295. 数据流的中位数 Hard难度
- 马斯克的“大脑改造计划”,还需要点亮哪些技能树?
- List接口的三大实现类比较
- 计算机技术在职研究生学校,计算机技术在职研究生招生2020
- web---jsp连接数据库
- 性能测试服务器数量与线上数量不同,性能需求分析