923

当我回顾我的 VB6 日子并想,“什么现代语言不允许用双加号递增?”时,我总是对自己笑:

number++

令我惊讶的是,我在 Python 文档中找不到任何关于此的内容。我真的必须服从number = number + 1吗?人们不使用++/--符号吗?

4

7 回答 7

1616

Python 不支持++,但你可以这样做:

number += 1
于 2010-04-13T19:46:57.307 回答
509

简而言之,++and--运算符在 Python 中不存在,因为它们不是运算符,它们必须是语句。为了简单和一致性,Python 中的所有命名空间修改都是一个语句。这是设计决策之一。而且因为整数是不可变的,所以“改变”变量的唯一方法是重新分配它。

++幸运的是,我们为--其他语言的用例提供了出色的工具,例如enumerate()itertools.count().

于 2010-04-13T20:12:36.777 回答
59

你可以做:

number += 1
于 2010-04-13T19:47:16.740 回答
35

是的。该++运算符在 Python 中不可用。Guido 不喜欢这些运算符。

于 2010-04-13T19:47:03.973 回答
25

++ 在类 C 语言中派上用场的主要原因是跟踪索引。在 Python 中,您以抽象的方式处理数据,很少通过索引等增加。最接近精神的是迭代器++的方法。next

于 2010-04-13T20:12:49.943 回答
12

查看Python 中递增和递减运算符的行为,了解为什么这不起作用。

Python 并没有真正的 ++ 和 --,而且我个人从未觉得这是一种损失。

我更喜欢名称清晰的函数,而不是语义不总是清晰的运算符(因此经典的面试问题是关于 ++x 与 x++ 以及重载它的困难)。我也从来不是后增量对可读性所做的事情的忠实粉丝。

您总是可以定义一些具有明确增量语义的包装类(如累加器),然后执行 x.increment() 或 x.incrementAndReturnPrev() 之类的操作

于 2010-04-13T19:48:17.130 回答
9

这里有一个解释: http ://bytes.com/topic/python/answers/444733-why-there-no-post-pre-increment-operator-python

然而,python 哲学中没有这个运算符增加了一致性并避免了隐含性。

此外,这种增量在 python 代码中没有广泛使用,因为 python 对迭代器模式加上函数 enumerate 有很强的实现。

于 2010-04-13T19:53:31.677 回答