Python作业五:编写一个计数器类型

作业:

编写一个计数器类型,创建的对象可以通过for循环遍历

提示:for循环可以遍历的对象是可迭代对象,内部可以通过\_\_iter\__()魔法方法获取遍历数据的迭代器

提示2:yield关键字

代码:

class Counter:
    """计数器类型,通过yield生成从0到end的整数序列."""

    def __init__(self, end):
        """
        初始化计数器实例,设置遍历结束值。

        :param end: 遍历结束的数值(包含)。
        """
        self.end = end

    def __iter__(self):
        """
        定义迭代器方法,使得Counter实例可被迭代。
        通过yield语句逐个生成从0到end的整数。
        """
        for number in range(self.end + 1):
            yield number


# 创建一个计数器实例,范围到100
counter_instance = Counter(6)

# 遍历并打印计数器的每个值
for number in counter_instance:
    print(number)

运行结果:

yield:

yield是Python中的一个关键字,主要用于生成器(generator)函数中,它具有以下关键用途:
(1)生成器函数:
        当一个函数包含yield语句时,它就变成了一个生成器函数。调用这样的函数不会立即执行函数体,而是返回一个生成器对象。
当生成器对象被迭代(如在for循环中)时,函数体开始执行,直到遇到yield语句,此时函数暂停并返回yield后面的表达式的值。
在下一次迭代时,函数从上次暂停的地方继续执行,而不是重新开始。
(2)状态保存:
        yield语句使得生成器能够记住上一次运行的状态,包括局部变量和执行位置,这样在下一次迭代时可以恢复这些状态。
这意味着生成器可以生成一个序列,而不需要一次性计算整个序列,从而节省内存。
(3)轻量级迭代:
        生成器通常用于实现轻量级的迭代,特别是处理大数据集或无限序列时,因为它们只在需要时生成下一个值。
这对于内存敏感的应用非常有用,因为它避免了存储整个序列的开销。
(4)协程(Coroutines):
        yield也可以用于实现协程,这是一种可以暂停和恢复执行的函数。协程允许在一个函数中通过yield from或await表达式与其他协程交互,实现复杂的并发控制。

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Bug.ink

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

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

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

打赏作者

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

抵扣说明:

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

余额充值