簡體   English   中英

需要幫助理解python語法

[英]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, []受讓人0self.num[]self.nums

請參閱assigment statements文檔

  • 如果目標列表是以逗號分隔的目標列表:對象必須是具有與目標列表中的目標相同數量的項目的可迭代項,並且項目將從左到右分配給相應的目標。

因為首先執行右側部分,所以行cur, self.num = self.num, self.num+1 計算self.num + 1 后將 self.num + 1 self.numcur ,該值被分配給self.num 如果self.num在該行之前是5 ,那么在該行之后cur5 ,並且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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM