[英]Need help understanding python syntax
有人可以解釋第5和第16行的語法
1 # Using the generator pattern (an iterable)
2 class firstn(object):
3 def __init__(self, n):
4 self.n = n
5 self.num, self.nums = 0, []
6
7 def __iter__(self):
8 return self
9
10 # Python 3 compatibility
11 def __next__(self):
12 return self.next()
13
14 def next(self):
15 if self.num < self.n:
16 cur, self.num = self.num, self.num+1
17 return cur
18 else:
19 raise StopIteration()
20
21 sum_of_first_n = sum(firstn(1000000))
這是元組任務; 您可以分配給多個目標。
首先評估右側表達式,然后將該序列中的每個值從左到右依次分配給左側的名稱。
因此, self.num, self.nums = 0, []
受讓人0
至self.num
並[]
至self.nums
。
- 如果目標列表是以逗號分隔的目標列表:對象必須是具有與目標列表中的目標相同數量的項目的可迭代項,並且項目將從左到右分配給相應的目標。
因為首先執行右側部分,所以行cur, self.num = self.num, self.num+1
在計算self.num + 1
后將 self.num + 1
self.num
給cur
,該值被分配給self.num
。 如果self.num
在該行之前是5
,那么在該行之后cur
是5
,並且self.num
是6。
self.num, self.nums = 0, []
cur, self.num = self.num, self.num+1
這些是以下方面的縮寫:
self.num = 0
self.nums = []
和
cur = self.num
self.num = self.num + 1
作為個人偏好,我不會在這兩行中的任何一行中使用復合賦值。 分配不相關,因此沒有理由將它們組合在一起。
有時候復合分配可以證明是有用的。 考慮如何在C和Java等語言中交換兩個數字:
temp = a
a = b
b = temp
在Python中我們可以消除臨時變量!
a, b = b, a
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.