【Python零基础入门篇 · 19】:递归函数、闭包、装饰器(语法糖用法、设置多个装饰器)

简介: 【Python零基础入门篇 · 19】:递归函数、闭包、装饰器(语法糖用法、设置多个装饰器)

递归函数


如果一个函数在内部不调用其它的函数,而是自己本身的话,这个函数就递归函数。


递归函数形成条件


  • 必须有一个明确的结束条件


  • 每进行更深一层的递归时,问题规模相比上次递归都要有所减少


  • 相邻两次重复之间有紧密的联系


代码演示


下图的代码逻辑:


  • 第一次:4 + func(3)


  • 第二次:4 + 3 + func(2)


  • 第三次:4 + 3 + 2 + func(1)


  • 在func(1)中,因为n==1,所以返回值1,代码结束,最终变成:4 + 3 + 2 + 1,结果为10



c11cc2a0e1304f3abb5a54b3e66801ed.png





闭包


两个函数的嵌套, 内部函数使用到了外部函数的变量, 这个现象就可以称之为产生闭包。


构成条件


  • 函数中嵌套了一个函数


  • 内层函数使用了外层函数的变量


  • 外层函数的返回值时内层函数的函数名

75861e07e92440509c28736de77ee2f0.png


也可写成:outter()()

362fe644261c4df19541c337bf0f3672.png


注意:虽然每次调用内函数,会开启一个函数,执行后消亡,但是闭包变量实际只有一份,每次使用内函数都在使用同一份闭包变量。


2b1620be6b6d48338e31bb0b1c2b55a8.png





装饰器(语法糖用法、设置多个装饰器)


装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象。


装饰器:增加额外功能

23051209473a46d8867b779f5b0ebc36.png


语法糖的使用


语法糖用法:


@装饰器名称(放到需要装饰的函数的头上即可)



dfea2a95cfd4485aa1fa3f03795a20dd.png


多个装饰器

247e25b20aec45a2aaded2b904fd8a72.png



相关文章
|
5月前
|
测试技术 Python
Python装饰器:为你的代码施展“魔法”
Python装饰器:为你的代码施展“魔法”
330 100
|
6月前
|
设计模式 缓存 监控
Python装饰器:优雅增强函数功能
Python装饰器:优雅增强函数功能
324 101
|
5月前
|
缓存 Python
Python装饰器:为你的代码施展“魔法
Python装饰器:为你的代码施展“魔法
282 88
|
6月前
|
缓存 测试技术 Python
Python装饰器:优雅地增强函数功能
Python装饰器:优雅地增强函数功能
271 99
|
6月前
|
存储 缓存 测试技术
Python装饰器:优雅地增强函数功能
Python装饰器:优雅地增强函数功能
348 98
|
6月前
|
缓存 Python
Python中的装饰器:优雅地增强函数功能
Python中的装饰器:优雅地增强函数功能
|
5月前
|
机器学习/深度学习 PyTorch 算法框架/工具
python torch基础用法
本教程系统讲解PyTorch基础,涵盖张量操作、自动求导、神经网络构建、训练流程、GPU加速及模型保存等核心内容,结合代码实例帮助初学者快速掌握深度学习开发基础,是入门PyTorch的实用指南。
716 6
|
6月前
|
缓存 测试技术 Python
解锁Python超能力:深入理解装饰器
解锁Python超能力:深入理解装饰器
164 2
|
6月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
812 102
|
6月前
|
数据采集 机器学习/深度学习 算法框架/工具
Python:现代编程的瑞士军刀
Python:现代编程的瑞士军刀
413 104

推荐镜像

更多