Python 三大利器:迭代器、生成器、装饰器

简介: Python 三大利器:迭代器、生成器、装饰器

Python 中的三大利器包括: 迭代器、生成器、装饰器,利用好它们才能开发出最高性能的代码,涉及到的内置模块 itertools 提供迭代器相关的操作。


迭代器


迭代是Python最强大的功能之一,是访问集合元素的一种方式。


迭代器是一个可以记住遍历的位置的对象。


迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。


迭代器有两个基本的方法:iter() 和 next()。


字符串,列表或元组对象都可用于创建迭代器:




创建一个迭代器


把一个类作为一个迭代器使用需要在类中实现两个方法 __iter__() 与 __next__() 。


如果你已经了解的面向对象编程,就知道类都有一个构造函数,Python 的构造函数为 __init__(), 它会在对象初始化的时候执行。


__iter__() 方法返回一个特殊的迭代器对象, 这个迭代器对象实现了 __next__() 方法并通过 StopIteration 异常标识迭代的完成。


__next__() 方法(Python 2 里是 next())会返回下一个迭代器对象。


实例:创建一个返回数字的反向迭代器,初始值为N,逐步递减 1:

class Descend():
  def __init__(self,N):
    self.N=N
    self.a=0
  def __iter__(self):
    return self
  def __next__(self):
    while self.a<self.N:
      self.N-=1
      return self.N+1
    raise StopIteration
>>> [i for i in Descend(10)]
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
>>> 




StopIteration

StopIteration 异常用于标识迭代的完成,防止出现无限循环的情况,在 __next__() 方法中我们可以设置在完成指定循环次数后触发 StopIteration 异常来结束迭代。




生成器

 

 

装饰器


目录
打赏
0
0
0
0
74
分享
相关文章
Python装饰器实战:打造高效性能计时工具
在数据分析中,处理大规模数据时,分析代码性能至关重要。本文介绍如何使用Python装饰器实现性能计时工具,在不改变现有代码的基础上,方便快速地测试函数执行时间。该方法具有侵入性小、复用性强、灵活度高等优点,有助于快速发现性能瓶颈并优化代码。通过设置循环次数参数,可以更准确地评估函数的平均执行时间,提升开发效率。
112 61
Python装饰器实战:打造高效性能计时工具
Python装饰器是什么?
装饰器是Python中用于动态修改函数、方法或类功能的工具,无需改变原代码。通过将函数作为参数传递并返回新函数,装饰器可以在原函数执行前后添加额外逻辑。例如,使用`@logger`装饰器可以打印函数调用日志,而`@timethis`则可用于计算函数执行时间。为了保持被装饰函数的元信息(如`__name__`和`__doc__`),可使用`functools.wraps`装饰器。此外,带参数的装饰器可通过嵌套函数实现,如`@timeitS(2)`,以根据参数条件输出特定信息。
91 59
python装饰器底层原理
Python装饰器是一个强大的工具,可以在不修改原始函数代码的情况下,动态地增加功能。理解装饰器的底层原理,包括函数是对象、闭包和高阶函数,可以帮助我们更好地使用和编写装饰器。无论是用于日志记录、权限验证还是缓存,装饰器都可以显著提高代码的可维护性和复用性。
54 5
探索Python中的装饰器:简化代码,增强功能
在Python的世界里,装饰器就像是给函数穿上了一件神奇的外套,让它们拥有了超能力。本文将通过浅显易懂的语言和生动的比喻,带你了解装饰器的基本概念、使用方法以及它们如何让你的代码变得更加简洁高效。让我们一起揭开装饰器的神秘面纱,看看它是如何在不改变函数核心逻辑的情况下,为函数增添新功能的吧!
Python中的装饰器深度解析与实践
在Python的世界里,装饰器如同一位神秘的魔法师,它拥有改变函数行为的能力。本文将揭开装饰器的神秘面纱,通过直观的代码示例,引导你理解其工作原理,并掌握如何在实际项目中灵活运用这一强大的工具。从基础到进阶,我们将一起探索装饰器的魅力所在。
|
7月前
|
python生成器表达式
python生成器表达式
|
9月前
|
如何在Python中使用生成器表达式?
如何在Python中使用生成器表达式?
65 5
|
9月前
|
Python 教程之控制流(17)生成器表达式
Python 教程之控制流(17)生成器表达式
36 0
Python 教程之控制流(17)生成器表达式
Python 教程之控制流(17)生成器表达式
64 0

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等