内部函数

在函数内部定义另一个函数,也就是函数的嵌套

在外部函数的作用域内,外部函数可以随意调用内部函数

由于内部函数的整个定义过程都在外部函数中,所以出了外部函数就无法再被调用了

def outside():
  print('外部函数被调用')
def inside():
    print('内部函数被调用')
  inside()
>>>outside()
外部函数被调用
内部函数被调用
>>>inside()
NameError: name 'inside' is not defined

闭包

如果在一个内部函数里引用了外部函数的变量,此时这个内部函数就被称为闭包

如果不加关键字nonlocal来声明,就会报错,闭包仅发生在嵌套函数中

def outside():
  var=3
  def inside():
    print(var)
    var=5
    print(var)
inside()
>>>outside()
UnboundLocalError: local variable 'var' referenced before assignment
修改:
def outside():
  var=3
  def inside():
    nonlocal var 使用关键字声明
    print(var)
    var=5
    print(var)
  inside()
>>>outside()
3
5

最新文章

  1. 那些年,坑死自己的事之fread/fwrite
  2. 【leetcode】Remove Nth Node From End of List
  3. dlopen、dlsym和dlclose的使用
  4. 一、PHP MongoDB Windows7_64位安装与配置
  5. 如何在组件(Component中)模拟用户控件(UserControl)中FindForm()?
  6. HDU 1599 find the mincost route (无向图的最小环)
  7. 简述tcp协议对http性能的影响及优化
  8. 适用于CSS2的各种运动的javascript运动框架
  9. 如何导出远程oracle数据库中的表结构
  10. JavaFX横幅类游戏开发 教训 游戏贴图
  11. IOS学习之路十四(用TableView做的新闻客户端展示页面)
  12. Spark架构原理
  13. Eclipse运行时发生An internal error occurred during:“**************” 的解决办法
  14. 同时使用 Ant Design of React 中 Mention 和 Form
  15. JVM:从实际案例聊聊Java应用的GC优化
  16. RedHat无法ping通Win10的解决办法
  17. C++中类的多继承
  18. daterangepicker日历插件使用参数注意问题
  19. Sencha Touch+PhoneGap打造超级奶爸之喂养记(一) 源码免费提供(转)
  20. CCF CSP 201703-2 学生排队

热门文章

  1. spring-第十二篇之两种后处理器
  2. kmp(单次匹配)
  3. [Python] 迭代器是什么?你每天在用的for循环都依赖它!
  4. Centos6.5 使用YUM安装MariaDB
  5. Visual Studio 插件ReSharper:代码生成工具
  6. 如何在C#中使用sqlite,一个简单的类
  7. 箭头函数中的this
  8. 【ASE高级软件工程】Alpha 阶段 backend组 scrum1 记录
  9. rk3288 android5.1 修改时区
  10. ELKStack之生产案例(下)