1. 修改闭包内使用的外部变量

修改闭包内使用的外部变量的错误示例:

# 定义一个外部函数
def func_out(num1):# 定义一个内部函数def func_inner(num2):# 这里本意想要修改外部num1的值,实际上是在内部函数定义了一个局部变量num1num1 = 10# 内部函数使用了外部函数的变量(num1)result = num1 + num2print("结果是:", result)print(num1)func_inner(1)print(num1)# 外部函数返回了内部函数,这里返回的内部函数就是闭包return func_inner# 创建闭包实例
f = func_out(1)
# 执行闭包
f(2)

运行结果:

修改闭包内使用的外部变量的示例:


# 定义一个外部函数
def func_out(num1):# 定义一个内部函数def func_inner(num2):# 这里本意想要修改外部num1的值,实际上是在内部函数定义了一个局部变量num1nonlocal num1  # 告诉解释器,此处使用的是 外部变量a# 修改外部变量num1num1 = 10# 内部函数使用了外部函数的变量(num1)result = num1 + num2print("结果是:", result)print(num1)func_inner(1)print(num1)# 外部函数返回了内部函数,这里返回的内部函数就是闭包return func_inner# 创建闭包实例
f = func_out(1)
# 执行闭包
f(2)

2. 小结

  • 修改闭包内使用的外部函数变量使用 nonlocal 关键字来完成。

修改闭包内使用的外部变量相关推荐

  1. Python:闭包(简介、使用方法、nonlocal修改闭包内使用的外部变量)、装饰器(定义、作用、通用装饰器、多个装饰器、带参数的装饰器、类装饰器、装饰器方式添加WEB框架的路由)

    一.闭包的介绍 闭包可以保存函数内的变量 当闭包执行完毕,外部函数的变量才释放. # 闭包的作用:可以保存外部函数的变量 # 闭包的形成条件 # 1.函数嵌套 # 2.内部函数使用了外部函数的变量或者 ...

  2. 外部函数能修改闭包内的变量_Python函数式编程,Python闭包

    前置内容 为了更容易理解闭包,在说闭包之前,讲一下两个概念:作用域和嵌套函数. 作用域 作用域是变量能被访问的范围,定义在函数内的变量是局部变量,局部变量的作用范围只能在函数内部,它不能在函数被外引用 ...

  3. 闭包函数 use 改变外部变量

    $hash_array = []; array_map(function($k,$v)use(&$hash_array){ $hash_array[$k] = $v; }, $_POST['k ...

  4. php 闭包函数传参,PHP闭包函数传参及使用外部变量 PHP闭包函数传参及使用外部变量的方法...

    想了解PHP闭包函数传参及使用外部变量的方法的相关内容吗,小谈博客在本文为您仔细讲解PHP闭包函数传参及使用外部变量的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:PHP,闭包函数,传参, ...

  5. python函数内部变量能改变外部吗_python中,如何利用函数修改外部变量,注意我的要求...

    问 题 void swap(int *p1, int *p2){ int temp; //临时变量 temp = *p1; *p1 = *p2; *p2 = temp; } int main(){ i ...

  6. 【C 语言】指针间接赋值 ( 直接修改 和 间接修改 指针变量 的值 | 在函数中 间接修改 指针变量 的值 | 在函数中 间接修改 外部变量 的原理 )

    文章目录 一.直接修改 和 间接修改 指针变量 的值 二.在函数中 间接修改 指针变量 的值 三.在函数中 间接修改 外部变量 的原理 一.直接修改 和 间接修改 指针变量 的值 直接修改 指针变量 ...

  7. 【C++】函数 指针类型参数 与 引用类型参数 对比 ( 修改外部变量需要传入的参数要求 | 参数作返回值 )

    文章目录 I . 博客总结 . 指针与引用类型参数 II . 指针作为参数和返回值 III . 引用参数简介 IV . 引用作为参数和返回值 I . 博客总结 . 指针与引用类型参数 1 . 讨论问题 ...

  8. java8新特性lambda表达式、函数式编程、方法引用和接口默认方法以及内部类访问外部变量

    一提到java是一种什么语言? 大多数人肯定异口同声的说是一门面向对象的语言,这种观点从我们开始学java就已经根深蒂固了,但是学到java8新特性函数式编程的时候,我才知道java并不是纯面向对象的 ...

  9. lambda表达式或者匿名函数中为什么要求外部变量为final

    1.参考博客 关于Lambda表达式里面修改外部变量问题 JDK8之前,匿名内部类访问的局部变量为什么必须要用final修饰 2.匿名内部类 在jdk7之前,匿名内部类访问外部类的局部变量时,那么这个 ...

最新文章

  1. np.percentile()函数超详解 异常值极端值百分位四分位数
  2. phpcms V9判断奇数偶数的实例
  3. word文档打印 自动编码_职场老油条才知道的3个Word打印技巧,一年能节省几百张打印纸!...
  4. Mysql数据库常用指令
  5. 实验 5 性能测试脚本录制和开发实验报告--软件功能测试与性能测试实验
  6. Java设计模式之代理(动态代理,静态代理)
  7. java死锁怎么用jvm调试_性能测试之JVM的故障排查-死锁
  8. c++interesting转换为uint_巴西插头标准,旅行转换插头是怎样的?
  9. 第四次作业(1、2小题)
  10. linux把ftp挂载成盘符,使用curlftpfs将ftp空间挂载到本地
  11. c语言怎么编程24小时制,[C语言][PTA] 7-7 12-24小时制
  12. java实现汉诺塔游戏(递归)(附超详细易懂注释)
  13. 【opencv】2.图像读取、显示、输出
  14. php实现同步异步,同步、异步
  15. 小白重装系统教程_大神教你小白一键重装系统
  16. 基于双层优化的微电网系统规划设计方法matlab程序(yalmip+cplex)
  17. golang入门笔记—ES
  18. matlab自带的traffic,Matlab Traffic ToolBox
  19. 顺丰测试开发工程师二面
  20. Phython常用函数

热门文章

  1. 在线直播 | 是事实还是贩卖焦虑?IT行业也偏爱“小鲜肉”​
  2. 写给Python开发者:机器学习十大必备技能
  3. GitHub标星14000+,阿里开源的SEATA如何应用到极致?
  4. 17篇论文入选CVPR 2019,百度AI都在关注什么?(附论文地址)
  5. 国行版HomePod售价2799元,本周五发售
  6. 资源 | 斯坦福最新NLP课程上线,选择PyTorch放弃TensorFlow
  7. 深入理解 Cache 工作原理
  8. 为什么阿里巴巴开发手册明确说明 Arrays.asList() 不能使用其修改方法
  9. 新网杯top1方案:手把手构建中文语音合成模型!
  10. 基于Dijkstra算法的武汉地铁路径规划!