返回函数
函数作为返回值
函数不仅可以作为函数参数,还可以作为函数返回结果
闭包
如果在一个内部函数里对外部作用域(但不是全局作用域)的变量进行引用,内部函数称为闭包(closure)
参考: https://www.cnblogs.com/mzc1997/p/7641995.html
练习
利用闭包返回一个计数器函数,每次调用它返回递增整数:
一开始我怎么都理解不了这里为什么要加上,如果不加就会报错。。这里就不得不学习一下nonlocal和global的知识了。
`global`和`nonlocal`关键字
python引用变量的顺序:
当前作用域局部变量->外层作用域变量->当前模块中的全局变量->python内置变量。
首先是第一行定义了全局变量a,但是如果内部函数有引用外部函数的同名变量或者全局变量,并且对这个变量有修改。那么python会认为它是一个局部变量,又因为函数中没有a的定义和赋值,所以报错。
如果不修改变量,则可以直接使用全局变量。
如果需要修改变量,需要声明全局变量(已有全局变量)。
nonlocal关键字用来在函数或其他作用域中使用外层(非全局)变量
也就是说,因为count不是全局变量,但是算是外层变量,在内部函数里面想要调用同名变量且做出修改的时候,需要实现声明该变量。
参考:https://www.cnblogs.com/z360519549/p/5172020.html
领取专属 10元无门槛券
私享最新 技术干货