擅长:python、mysql、java
<p>欢迎来到python社区!这是一个很好的问题。在python中,就像在其他语言中一样,有很多方法来完成任务。但是,当您遵循python社区所遵循的约定时,这通常被称为“python”解决方案。print_progression方法是用户定义的数据结构迭代的常见python解决方案。在上面的例子中,让我们先解释一下代码是如何工作的,然后解释为什么要这样做。在</p>
<p>print_progression方法利用progression类通过实现<strong>next</strong>和<strong>iter</strong>dunder/magic方法来实现迭代协议。因为这些都是实现的,所以你可以像next(self)那样在内部迭代类实例,也可以在外部迭代next(Progression()),这正是您在数字1中得到的结果。因为这个协议已经实现了,这个类可以在任何客户端的任何内置迭代器和生成器上下文中使用!这是一种多态性的解决方案。它只是在内部使用,因为你不需要用两种不同的方法。在</p>
<p>现在是未使用的J变量。他们只是使用它,以便可以使用for循环。仅仅使用range(n)将只返回一个ITETRABLE,但不会对其进行迭代。我不太同意作者使用名为J的变量,通常更常见的是表示一个未使用的变量,因为它需要作为一个单独的下划线使用。我更喜欢这个:</p>
<pre><code> print(' '.join(str(next(self)) for _ in range(n)))
</code></pre>