每当回忆起我使用 VB6 的时候,总会心里暗笑,“现代语言中哪个不允许用双加号进行自增操作呢?”
number++
令我惊讶的是,在Python文档中我没有找到任何相关内容。难道我真的要使用number = number + 1
这种方式吗?人们不会使用++
/ --
这种符号吗?
Python不支持++
,但您可以这样做:
number += 1
progress = 0; print(progress += 1)
。因此,+=
看起来并不能完全替代 C++ 的 ++
操作符。 - Dr_Zaszuś简单来说,在Python中不存在++
和--
操作符,因为它们不会是操作符,它们必须是语句。 在Python中的所有命名空间修改都是语句,以保持简单和一致性。 这是设计决策之一。由于整数是不可变的,因此“更改”变量的唯一方法是通过重新分配它。
幸运的是,我们在其他语言中有很棒的工具可以处理++
和--
的用例,例如enumerate()
和itertools.count()
。
enumerate()
和 itertools.count()
的有用参考资料。 - tatoreserved_index = 0; col_names = [name if name != '_' else 'reserved' + (reserved_index++) for name in column_names]
?我传递了一个列名列表,其中一些不感兴趣的列名只是 '_'
。我需要构建一个临时表,将那些 '_'
替换为唯一但无意义的名称。使用就地后增运算符会使此操作变得容易;我正在努力想出其他不涉及显式循环数组的方法。 - Tomreserved_indices = itertools.count(); col_names = [name if name != '_' else 'reserved' + str(next(reserved_indices)) for name in column_names]
这段代码的作用是对列名进行处理。如果列名为下划线,则将其替换为 "reserved" 加上一个数字,以保证列名的唯一性。其中,itertools.count()
是 Python 的一个库函数,可用于生成无限递增的整数序列。 - Artyernumber += 1
是的,在Python中没有++
运算符。Guido不喜欢这些运算符。
在类似C的语言中,++主要用于追踪索引。在Python中,您以抽象的方式处理数据,很少通过索引进行递增等操作。在精神上最接近++的东西是迭代器的next
方法。
a[i] = i++;
这样的代码,在C++中求值顺序是未定义的。 - Tim Pietzckeri++
写起来更短,读起来也更简单。读得越少,大脑就能更专注于整个大局。 - Robino