最近开始学习python,一直觉得python定义变量前没有命令很难受,果然今天在练习闭包时遇到了这个问题。先看看出问题的代码

def createCounter():n = 0def counter():n = n + 1 return nreturn counter

这里会报错:UnboundLocalError: local variable 'n' referenced before assignment

原因:n = n + 1 这行代码导致的歧义

  • 理解为新定义的变量n,并且n = n + 1,由于之前n未被定义,所以会报错

解决方法:用global命令或者nonlocal命令

  • 我喜欢用nonlocal命令,因为global命令会导致全局变量臃肿,修改后代码如下
def createCounter():n = 0def counter():nonlocal nn = n+1return nreturn counter

这样子就不会报错了

Python闭包局部变量问题相关推荐

  1. 深入理解Python闭包概念

    闭包并不只是一个Python中的概念,在函数式编程语言中应用较为广泛.理解python中的闭包一方面是能够正确的使用闭包,另一方面可以好好体会和思考闭包的设计思想. 1.概念介绍 首先看一下维基上对闭 ...

  2. Python闭包及其作用域

    Python闭包及其作用域 关于Python作用域的知识在python作用域有相应的笔记,这个笔记是关于Python闭包及其作用域的详细的笔记 如果在一个内部函数里,对一个外部作用域(但不是全局作用域 ...

  3. Python 闭包详解

    在函数编程中经常用到闭包.闭包是什么,它是怎么产生的及用来解决什么问题呢.给出字面的定义先:闭包是由函数及其相关的引用环境组合而成的实体(即:闭包=函数+引用环境)(想想Erlang的外层函数传入一个 ...

  4. Python闭包与延迟绑定

    Python闭包 1.什么是闭包,闭包必须满足以下3个条件: 必须有一个内嵌函数 内嵌函数必须应用外部函数的变量 外部函数的返回值必须是内嵌函数 举个栗子 # 嵌套函数但不是闭包 def nested ...

  5. python闭包的应用场景_Python闭包函数定义与用法分析

    python函数的闭包怎么理解小编憎恨离别.但若,离别能让你牵挂,小编愿意离开你. 1. 闭包的概念 首先还得从基本概念说起,什么是闭包呢?来看下维基上的解释: 复制代码代码如下: 在计算机科学中,闭 ...

  6. Python闭包基本介绍与作用

    目录 1.闭包基本介绍 1.1 外函数的返回值是内函数的引用 1.2 外函数把临时变量绑定给内函数 1.3 闭包中内函数修改外函数局部变量 2.闭包的作用 1.闭包基本介绍 "闭包" ...

  7. [转载] 根据Python常见面试题来谈谈 Python 闭包

    参考链接: Python闭包 这里根据我们平常见到的一些Python常见面试题来跟大家说一下关于Python闭包的相关问题! 题目: 1.什么是闭包?闭包的定义? 2.手写一个简单的闭包 3.变量作用 ...

  8. [转载] python 闭包和装饰器详解

    参考链接: Python中的装饰器 python 闭包,装饰器 一 闭包 如果在一个函数的内部定义了另一个函数,外部的函数叫它外函数,内部的函数叫它内函数. 1 闭包条件 1 在一个外函数中定义了一个 ...

  9. python生产实战 python 闭包之庖丁解牛篇

    python生产实战 python 闭包之庖丁解牛篇 python生产实战 从闭包到中间件 什么是闭包 计算机中的闭包 数学领域中的闭包 闭包使用场景 C/C++ 中的闭包思想 C 中类似闭包的结构 ...

最新文章

  1. SAP MM 计量单位EA的数量可以有小数点
  2. Hadoop学习--Hive安装与配置
  3. jdk8中java.util.concurrent包分析
  4. shader 3 rendering path
  5. nginx 端口没有被占用启动闪退_Nginx 的简单使用 (IIS,Asp.Net) - 奋斗的中年人哈哈哈...
  6. Hyper-V 2016:支持guest操作系统
  7. 渗透测试神器CS(4.0)的使用
  8. Linux安装Yum包管理器
  9. 关于下载(前后端)第1部分
  10. c#中的ref、out、params参数
  11. Android 开发高效工具之道
  12. PAIP.ASP技术手册
  13. 刘永行:领导者的得与失
  14. Java基础知识笔记第八章:常用的实体类
  15. 转发的 呀 犯法不 顶级 的 学学不错 【分享】各大资源论坛推荐及优势特点
  16. 2022低压电工考试题库模拟考试平台操作
  17. Vue3.0 + pdf.js 实现pdf预览
  18. UG二次开发GRIP标准件库
  19. 如何用一根网线连接两台电脑进行通信
  20. HMI-40-【节能模式】平均油耗实现

热门文章

  1. Appium的环境搭建和配置
  2. Target runtime Apache Tomcat v7.0 is not defined.
  3. VTK与Qt整合的示例
  4. css中font-family的中文字体
  5. Mars 算法实践——人脸识别
  6. linux规则及别名设置
  7. POJ2594 Treasure Exploration[DAG的最小可相交路径覆盖]
  8. Handler线程间通信
  9. 希尔排序 - 数据结构和算法91
  10. iphone开发小技巧,转载