为什么Python中没有++和——运算符?
当前回答
我一直认为这与python的禅意有关:
应该有一种——最好只有一种——明显的方法来做到这一点。
x++和X +=1做的是完全相同的事情,所以没有理由同时拥有两者。
其他回答
它就是这样设计的。自增和自减运算符只是x = x + 1的快捷方式。Python通常采用一种设计策略,减少执行操作的可选方法的数量。增强赋值是Python中最接近自增/自减操作符的东西,它们直到Python 2.0才被添加。
当然,我们可以说“Guido只是决定那样做”,但我认为问题实际上是关于这个决定的原因。我认为有以下几个原因:
它将语句和表达式混合在一起,这不是好的实践。参见http://norvig.com/python-iaq.html 它通常鼓励人们编写可读性较差的代码 语言实现中的额外复杂性,如前所述,这在Python中是不必要的
正如我理解的那样,你不会认为内存中的值被改变了。 在c语言中,当你执行x++时,内存中的x值会发生变化。 但在python中,所有数字都是不可变的,因此x指向的地址仍然是x而不是x+1。当你写x++时,你会认为x改变了,实际上发生的是x引用被改变到内存中存储x+1的位置,或者如果doe不存在,重新创建这个位置。
操作符的++类是带有副作用的表达式。这在Python中通常是找不到的。
出于同样的原因,赋值在Python中不是表达式,从而防止使用here */}习语来使用常见的if (a = f(…)){/*。
最后,我怀疑这些操作符与python的引用语义不太一致。请记住,Python没有C/ c++中已知语义的变量(或指针)。
因为,在Python中,整数是不可变的(int's +=实际上返回一个不同的对象)。
同样,使用++/——,您需要考虑前后的递增/递减,并且只需要多击一次键就可以写出x+=1。换句话说,它以很少的收益为代价避免了潜在的混乱。
推荐文章
- 证书验证失败:无法获得本地颁发者证书
- 当使用pip3安装包时,“Python中的ssl模块不可用”
- 无法切换Python与pyenv
- Python if not == vs if !=
- 如何从scikit-learn决策树中提取决策规则?
- 为什么在Mac OS X v10.9 (Mavericks)的终端中apt-get功能不起作用?
- 将旋转的xtick标签与各自的xtick对齐
- 为什么元组可以包含可变项?
- 如何合并字典的字典?
- 如何创建类属性?
- 不区分大小写的“in”
- 在Python中获取迭代器中的元素个数
- 解析日期字符串并更改格式
- 使用try和。Python中的if
- 如何在Python中获得所有直接子目录