2013-02-25 169 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