Python整数递增与++

Zna*_*kus 734 python syntax

可能重复:
Python:递增和递减运算符的行为

当我回顾我的VB6时,我总是嘲笑自己,并且想:"现代语言不允许用双加号增加?":

number++
Run Code Online (Sandbox Code Playgroud)

令我惊讶的是,我在Python文档中找不到任何相关内容.我真的要服从自己number = number + 1吗?人们不会使用这种++/--符号吗?

Dan*_*ach 1304

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

number += 1
Run Code Online (Sandbox Code Playgroud)

  • 我认为@ Thomas的解释在这里更有用; 我认为问题更多的是"为什么"而不是"什么". (89认同)
  • 不完全是。以下将不会按预期工作:`progress = 0; 打印(进度 += 1)`。所以`+=` 似乎并没有完全取代C++ 的`++` 操作符。 (4认同)

Tho*_*ers 435

简单地说,Python中不存在++--运算符,因为它们不是运算符,它们必须是语句.为简单起见和一致性,Python中的所有命名空间修改都是一个声明.这是设计决策之一.因为整数是不可变的,所以"改变"变量的唯一方法就是重新分配它.

幸运的是我们有一个的用例美妙的工具++--其他语言,如enumerate()itertools.count().

  • 有用的参考`enumerate()`和`itertools.count()` (10认同)
  • @Tom` reserved_indices = itertools.count(); col_names = [name name name!='_'else'reserved'+ str(next(reserved_indices))name_names中的name] (4认同)
  • 这个决定违反了规则 - 毫不奇怪.++编号适用于大多数语言. - 这可能导致多少错误.该语言也应该是开发人员友好的) (3认同)
  • 注意建议一个优雅的替代品:`reserved_index = 0; col_names = [name name name!='_''else'reserved'+(reserved_index ++)for name_names]`?我传递了一个列名列表,其中一些不感兴趣的只是''_'`.我需要构建一个临时表,其中`'_'替换为唯一但无意义的名称.就地后增量运算符可以使这很容易; 我正在努力想出一些其他不涉及显式循环数组的东西. (2认同)
  • @jeffery.yuan 从事这件事还不到一年(指的是 python——我已经编码了几十年),但是,伙计,这样的事情的数量……令人难以置信。最低公分母有点赢了。 (2认同)

Pie*_*tte 26

是.该++运营商不可用Python编写的.Guido不喜欢这些运营商.

  • 不过,它使得编写 UI 代码的行数大大减少。好吧,除了使用 Python 可以将代码量减少到 C++ 代码量的 15% 之外,呵呵。 (2认同)

Mik*_*ham 21

++在C语言中派上用场的主要原因是为了跟踪索引.在Python中,您以抽象的方式处理数据,很少通过索引等来增加数据.最接近于灵的东西++next迭代器的方法.

  • 有时我发现你真的只需要迭代索引,例如,如果你想跟踪一个函数在收敛之前运行了多少次,等等。虽然这可能仍然算作“很少使用”,但 Python 非常适合大多数科学编码的一部分,FWIW。 (2认同)

Uri*_*Uri 12

看看Python中增量和减量运算符的行为,以解释为什么这不起作用.

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

我更喜欢具有明确名称的函数到具有非始终清晰语义的运算符(因此关于++ x与x ++的经典访谈问题以及重载它的困难).我也从未成为后增量对可读性的忠实粉丝.

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


pyg*_*iel 8

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

然而,缺少这个运算符是在python哲学中增加一致性并避免隐含性.

另外,这种增量在python代码中没有广泛使用,因为python具有迭代器模式和函数枚举的强大实现.