【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



相关文章
|
8天前
|
测试技术 数据库 Python
Python装饰器实战:打造高效性能计时工具
在数据分析中,处理大规模数据时,分析代码性能至关重要。本文介绍如何使用Python装饰器实现性能计时工具,在不改变现有代码的基础上,方便快速地测试函数执行时间。该方法具有侵入性小、复用性强、灵活度高等优点,有助于快速发现性能瓶颈并优化代码。通过设置循环次数参数,可以更准确地评估函数的平均执行时间,提升开发效率。
85 61
Python装饰器实战:打造高效性能计时工具
|
8天前
|
设计模式 前端开发 Shell
Python装饰器是什么?
装饰器是Python中用于动态修改函数、方法或类功能的工具,无需改变原代码。通过将函数作为参数传递并返回新函数,装饰器可以在原函数执行前后添加额外逻辑。例如,使用`@logger`装饰器可以打印函数调用日志,而`@timethis`则可用于计算函数执行时间。为了保持被装饰函数的元信息(如`__name__`和`__doc__`),可使用`functools.wraps`装饰器。此外,带参数的装饰器可通过嵌套函数实现,如`@timeitS(2)`,以根据参数条件输出特定信息。
76 59
|
1月前
|
缓存 数据安全/隐私保护 Python
python装饰器底层原理
Python装饰器是一个强大的工具,可以在不修改原始函数代码的情况下,动态地增加功能。理解装饰器的底层原理,包括函数是对象、闭包和高阶函数,可以帮助我们更好地使用和编写装饰器。无论是用于日志记录、权限验证还是缓存,装饰器都可以显著提高代码的可维护性和复用性。
39 5
|
1月前
|
测试技术 开发者 Python
探索Python中的装饰器:从入门到实践
装饰器,在Python中是一块强大的语法糖,它允许我们在不修改原函数代码的情况下增加额外的功能。本文将通过简单易懂的语言和实例,带你一步步了解装饰器的基本概念、使用方法以及如何自定义装饰器。我们还将探讨装饰器在实战中的应用,让你能够在实际编程中灵活运用这一技术。
45 7
|
1月前
|
Python
探索Python中的装饰器:简化代码,增强功能
在Python的世界里,装饰器就像是给函数穿上了一件神奇的外套,让它们拥有了超能力。本文将通过浅显易懂的语言和生动的比喻,带你了解装饰器的基本概念、使用方法以及它们如何让你的代码变得更加简洁高效。让我们一起揭开装饰器的神秘面纱,看看它是如何在不改变函数核心逻辑的情况下,为函数增添新功能的吧!
|
1月前
|
程序员 测试技术 数据安全/隐私保护
深入理解Python装饰器:提升代码重用与可读性
本文旨在为中高级Python开发者提供一份关于装饰器的深度解析。通过探讨装饰器的基本原理、类型以及在实际项目中的应用案例,帮助读者更好地理解并运用这一强大的语言特性。不同于常规摘要,本文将以一个实际的软件开发场景引入,逐步揭示装饰器如何优化代码结构,提高开发效率和代码质量。
63 6
|
1月前
|
存储 缓存 Python
Python中的装饰器深度解析与实践
在Python的世界里,装饰器如同一位神秘的魔法师,它拥有改变函数行为的能力。本文将揭开装饰器的神秘面纱,通过直观的代码示例,引导你理解其工作原理,并掌握如何在实际项目中灵活运用这一强大的工具。从基础到进阶,我们将一起探索装饰器的魅力所在。
Python闭包函数和计时器
本文介绍了闭包函数的概念,它允许内部函数引用外部作用域的变量但无法修改它们。示例展示了如何使用闭包来封装函数。接着,文章讨论了如何在函数调用时添加开始和结束的打印语句,通过传递函数作为参数实现。然后,文章引入装饰器,通过闭包定义了一个`timer`装饰器,用于在函数执行前后打印消息。最后,给出了一个练习,实现了一个计算函数执行时间的装饰器,处理了带有参数的被装饰函数。
|
8月前
|
Python
深入理解python的闭包函数
深入理解python的闭包函数
|
数据采集 Python
Python入门教程:什么闭包函数
闭包:闭是封闭(函数内部函数),包是包含(该内部函数对外部作用域而非全局作用域的变量的引用)。闭包指的是:函数内部函数对外部作用域而非全局作用域的引用。 提示:之前我们都是通过参数将外部的值传给函数,闭包提供了另外一种思路,包起来喽,包起呦,包起来哇。
135 0

热门文章

最新文章