我想知道第8行的任务是什么。在
# Iterators
class Fibs:
def __init__(self):
self.a = 0
self.b = 1
def next(self):
self.a, self.b = self.b, self.a+self.b # <--- here
return self.a
def __iter__(self):
return self
fibs = Fibs()
for f in fibs:
if f > 1000:
print f
break
剩下的节目我真的不需要太多的解释。我不确定分配给什么的。在
这是一对速记作业
只是用一行代码代替两个任务。。准确地说,我认为赋值的左操作数被认为是由两个元素组成的元组,所以你就像给元组
(self.a, self,b)
赋值(self.b, self.a+self.b)
,它与前面写的三个独立赋值相同,而不需要临时变量。这是因为,在不使用元组的情况下,赋值是按顺序执行的,在您的示例中,它们是同时解析的,在第二个赋值中保留self.a
的值。在如文件所述:
对象到目标列表的赋值递归定义如下。在
这是一个多重任务,大致相当于:
或者这个伪代码:
^{pr2}$如您所见,多重赋值比单独赋值简洁得多,并且更类似于伪代码示例。在
几乎这个例子在Python documentation中给出,作为计算Fibonacci数的例子。多重赋值的一个优点是,在任何赋值发生之前,右边的变量都被求值,这样就省去了对临时变量的需要。在
不看周围的代码,我想说它是计算斐波纳契数的算法的核心。在
它相当于:
…从而计算序列中的下一个数。在
如果你看一系列的数字
^{pr2}$让
a
和b
是最后两个数字,然后在b中有下一个数字,在a中有前最后一个数字(b)使用这种奇怪符号的原因是为了同时完成两项任务。如果第二行的值是第二行的两倍。在
相关问题 更多 >
编程相关推荐