python7.函数作用域与匿名函数

本文深入探讨了函数作用域的概念,包括变量的查找顺序、全局与局部变量的区别以及如何通过`global`和`nonlocal`关键字来修改它们。此外,还详细解释了匿名函数(lambda)的使用场景和函数的递归特性,强调了递归必须有明确的终止条件以避免无限循环。最后,介绍了闭包的概念,它是如何作为外部函数与嵌套函数之间的桥梁,并讨论了回调函数及其在闭包中的应用。
摘要由CSDN通过智能技术生成

函数作用域:
变量搜索顺序:先局部再全局(从小往大),内部和全局变量名相同时使用函数只使用函数里面的变量
全局变量:函数设立前赋值的变量
局部变量:函数内设立的变量
访问:外部不能直接访问内部,执行函数时return不能访问return前赋值的变量,内部能访问外部
修改:局部不能改全局,全局能改局部,因为全局不仅影响设立的新函数还要影响其他条件
局部修改全局变量需要加global(改全局)
函数嵌套局部的局部时修改局部时,需要加nonlocal(改局部,内层修外层)
global和nonlocal都是把外拉进内
匿名函数:(与三目函数同类)可以不用使用def的函数
函数一般用类似于map、filter等,函数(lambda 参数 : 表达式,可迭代对象),函数套进函数中用
这样不用提前创造一个新的函数条件
闭包:(二级命令含有return加嵌套函数本身,且如果涉及主函数的变量被子函数修改而不是调用,则必须要用到nonlocal否则无法调用)
包是函数嵌套函数,闭包是外部函数与所嵌套的内部函数沟通的桥梁
使用方式外部函数加return加内部函数,用外部函数赋值变量,再次调用会执行’变量()‘,即可内部函数
先变量(函数()),再变量(),相当于((函数())(加数值))执行外部函数再执行内部函数的函数体(print的功能代码,而不是return代码)
递归:(函数自己调用自己,不用写循环条件),函数中的return加函数自身再加括号也是一种递归
递归需要终止条件,否则会循环下去达到递归深度然后报错或黑屏
回调函数:
自身是一个函数,一个函数被传入到另一个函数中被调用,但调用不一定执行,主要看是否有条件完全限制这种情况就不是回调,半限制或不限制才算,就像创造了新函数在后续用到了才是回调
在闭包中使用回调函数也可以
函数中有‘· · ·’是对函数进行说明,help(函数)时会显示出来
闭包要嵌套函数,回调不嵌套函数

return加函数自身加括号时为递归,不加括号时且属于子函数为闭包

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

T o r

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值