2013-02-25 170 views
1

在第4行爲什麼我們必須在「 - 」之後加上「=」?「num-1」vs「num - = 1」

num = 5 
if num > 2: 
    print(num) 
    num -= 1 
print(num) 
+7

不知道,print(4)print(3)會更簡潔。 – 2013-02-25 09:15:31

+5

@TonyHopkinson:這段代碼顯然是說明性的。 – nneonneo 2013-02-25 09:16:05

+0

混淆了我。 num- = 1將是說明性的。這個問題非常微不足道,本來可以通過OP沒有真正的努力來回答,我不關閉它的唯一原因是萬一你失去了你的觀點。 – 2013-02-25 18:39:46

回答

11

num - 1:產生從num減去1的結果; num不改變

num -= 1:減去一個由num並存儲該結果(相當於num = num - 1num是一個數字)

請注意,可以使用num - 1作爲表達,因爲它產生的結果,例如foo = num - 1print(num - 1),但不能使用num -= 1作爲Python中的表達式。

5
num -= 1 

相同

num = num - 1 
+7

除非它不是,就像'l + = [0]'!='l = l + [0]' – nneonneo 2013-02-25 09:14:48

+0

但是我們知道num是5這裏....或者? – 2013-02-25 09:18:25

+2

這裏有效,你可以寫'num = num - 1'或'num - = 1',因爲'num'是一個數字。但是,如果你有一個'l'列表,那麼'l + = [0]'不會和'l = l + [0]'一樣(前者附加,後者是一個全新的列表)。 – nneonneo 2013-02-25 09:19:56

5

=需要給減法的結果賦給回num

以下:

num -= 1 

減去一個從num並將結果賦給回num

在另一方面,下面的:

num - 1 

減去一個從num和丟棄結果

5

因爲num - 1什麼都不做,但num -= 1更改了num的值減一。

3

你基本上是問

num - 1 

num -= 1 

前者之間的區別在於,計算結果爲num - 1的表達式。後者是指派num - 1num的作業。

所以,前者不修改num,後者的確如此。

3

這是寫作的一個較短的版本:

num = num - 1 
+1

對此陳述要非常小心。 'l = l + [0]'不同於'l + = [0]'。 '='和'+ ='是獨立的運算符。 – nneonneo 2013-02-25 09:18:45

1

-=是運營商。 該運算符等於減法運算。

num -= 1裝置是num = num - 1

它用於減法從本身與右側給定值。

+2

這是Python。 'num - '不是Python。 – 2013-02-25 09:16:22

+0

你在說什麼? – 2013-02-25 09:18:23

+0

你說你可以寫'num - '而不是寫'num - = 1'。 Python中不是這種情況,因爲Python中沒有'--'運算符。 – 2013-02-25 09:23:31

2

你不要做任何事情,除非你需要爲你的程序做些事情才能正常運行。有些事情是很好的做法,但不要讓任何人或任何東西,但編譯器和規範說服你,你做某事這樣或那樣。在這種情況下,n -= 1n = n - 1完全相同。因此,如果您不希望在=之前放置-,那麼請不要。改爲使用n = n - 1

1

-=是一個操作符,你寫的會產生num = num - 1