Python integer incrementing with ++
Possible Duplicate:
Python: Behaviour of increment and decrement operators
当我回顾我的vb6时,我总是自嘲:"什么现代语言不允许用双加号递增?":
令我惊讶的是,我在python文档中找不到任何关于这个的信息。我真的要服从于number = number + 1吗?人们不使用++/--符号吗?
- 我非常高兴,我们不必忍受EDCOX1第0条这样的事情,其中C++中的评价顺序是未定义的。
- 即使有这样的事情,我认为在Python中,顺序是定义良好的。(docs.python.org/reference/expressions.html评估顺序‌&8203;)
- 回答你的问题的顺序是:"二郎、Python、六婆等"(对于C创造后的"现代"意义);"不";"不一定"。
- 你说的是前缀++还是后缀++?首先,我讨厌教授C语言的这一部分,并且因为模棱两可而避免了它。为什么要用其他语言寻找这个可怕的东西?
- 事实上,为什么要为普遍的任务设置捷径?
- 不同意你们所有人的观点:i++写的少,读的少。更少的阅读意味着大脑可以更多地关注全局。
- @Timpietzcker:一个更好的解决方案是很好地定义评估顺序,可能是从左到右,而不是删除一个有用的操作符。而对op来说:python几乎不是一种现代语言…尽管被广泛使用,但实际上这是一种相当蹩脚的语言。
- @罗比诺更少的阅读,更多的处理。还有什么更复杂更难看的,i++或i += 1?
- "哦?"???P?Z??C两者都不是特别复杂,也不是丑陋的。第一个更容易理解。
- @罗比诺看迈克的回答
- @Python不是一种蹩脚或古老的语言。它有一个相当独特的语法,很容易学习。如果说蹩脚,你的意思是慢,因为它是解释而不是编译的,那么pyc实际上是非常快的。
- @切维多格:我想你是想回答班加罗尔,不是我?
- ++我和i++,然后我们再谈一次"大脑可以专注于其他事情",@robino。
python不支持++,但您可以:
- 我认为@thomas的解释在这里更有用;我认为问题更多的是why,而不是what。
- 这是我要找的+1
- 同意@rickcnagy,更像是"怎么做?"(如果你真的不关心代码的简洁性,你也可以简单地做number=number+1)为什么在python中不存在++和--的推理看起来更有用。
- 不完全是这样。以下内容将无法按预期工作:progress = 0; print(progress += 1)。因此+=并不完全取代C++的EDCOX1×4算子。
- 伙计,这真是个糟糕的主意,因为如果你需要大量的i++操作(例如初始化一个需要id的实例列表),那么你就不走运了,不得不像白痴一样把行数加倍。
简单地说,++和--操作符在python中不存在,因为它们不是操作符,必须是语句。为了简单性和一致性,python中的所有名称空间修改都是一个语句。这是设计决策之一。因为整数是不可变的,唯一改变变量的方法就是重新分配它。
幸运的是,对于其他语言(如enumerate()和itertools.count())中的++和--的用例,我们有很好的工具。
- 对enumerate()和itertools.count()的有用参考
- 真不敢相信Python这么重视语言设计!我开始爱上这门语言了!-)
- 是否建议一个优雅的替代品:reserved_index = 0; col_names = [name if name != '_' else 'reserved' + (reserved_index++) for name in column_names]?我收到一个列名称列表,其中一些不感兴趣的只是'_'。我需要构建一个临时表,将那些'_'替换为唯一但没有意义的名称。就地的后增量操作符将使这变得容易;我正在努力想出其他一些不涉及显式循环数组的方法。
- @汤姆·埃多克斯(Tom EDOCX1)(12)
- 这一决定违反了规则——毫不奇怪。++数字适用于大多数语言。-这可能导致多少错误。该语言也应该对开发人员友好)
- 我对python不太了解,所以我确信我遗漏了一些东西,但我不理解这一逻辑,即++不能在python中实现,因为它不完全适合python现有的方案。首先,即使如此,添加如此广泛使用的特性对我来说似乎更重要。其次,与现有的python特性相比,它似乎不那么令人震惊,例如,print是python2中的语句,而不是函数。既然我们都接受了这种奇怪,我相信我们可以接受++是一个声明而不是一个运算符。
你可以做到:
对。在python中,++运算符不可用。吉多不喜欢这些接线员。
- 也许吉多不希望有人发明Python++;哈哈。
- 不过,这使得编写UI代码的行y要少得多。好吧,除了使用Python将你的行剪切为15%,它们将是C++,HEH。
++在类C语言中使用方便的主要原因是跟踪索引。在Python中,您以抽象的方式处理数据,很少通过索引等进行增量。与++最接近的是迭代器的next方法。
- 有时我发现您确实需要迭代索引,例如,如果您想跟踪一个函数在收敛之前运行了多少次,等等。尽管这可能仍然算是"很少使用",但python非常适合大部分科学编码,fwiw。
你可以使用:
请看一下Python中递增和递减操作符的行为,以了解这不起作用的原因。
python并没有真正的++和——,我个人也从来没有觉得这是一个损失。
与语义不总是清晰的运算符相比,我更喜欢具有清晰名称的函数(因此,关于+X与X++的经典访谈问题以及重载它的困难)。我也从未对后增量对于可读性的作用有过极大的兴趣。
您总是可以用清晰的增量语义定义一些包装类(如accumulator),然后执行x.increment()或x.incrementandreturnprev()之类的操作。
这里有一个解释:http://bytes.com/topic/python/answers/444733-why-there-no-post-pre-increment-operator-python
然而,在Python哲学中缺少这个操作符可以提高一致性并避免隐含性。
此外,这种增量在Python代码中并没有广泛使用,因为Python具有迭代器模式和函数枚举的强大实现。