为了账号安全,请及时绑定邮箱和手机立即绑定

请问为什么 Python,Ruby 等语言弃用了自增运算符

请问为什么 Python,Ruby 等语言弃用了自增运算符

不负相思意 2019-07-11 15:06:56
请问为什么 Python,Ruby 等语言弃用了自增运算符
查看完整描述

3 回答

?
眼眸繁星

TA贡献1873条经验 获得超9个赞

在 Python 中,整数是一种不可变类型。在创建对象之后,其值就不能再被改变。

在 Java 或 C 等语言中, ++ 做的事情是让这个变量的值 +1,比如 a = 1; a++,意思是将 a 原本的内存区域表示的值替换为原本的值 +1。而在 Python 中,一旦一个整数对象创建,其值就不能再被改变。所以,就无法实现 自增、自减 操作了。

---------------
更新一下吧,关于 i += 1 和 i = i + 1 究竟有什么不一样。在大多数情况下,你可以认为这两种写法是等价的。但是在实现上,还是有些许差异的,下面以整形变量 a 举例,两种写法生成的字节码如下:

i += 1:
6 LOAD_FAST 0 (a)
9 LOAD_CONST 1 (1)
12 INPLACE_ADD
13 STORE_FAST 0 (a)

i = i + 1
6 LOAD_FAST 0 (a)
9 LOAD_CONST 1 (1)
12 BINARY_ADD
13 STORE_FAST 0 (a)

可以看到,在底层调用上还是不同的。反应到 Python 语言层面的实现上,__add__ 对应着 + 号运算,而 __iadd__ 对应着 += 运算。

 

 


查看完整回答
反对 回复 2019-07-12
?
婷婷同学_

TA贡献1844条经验 获得超8个赞

在语法上出现自增自减运算符可能是不够优雅的。作为一门注重效率的语言,C语言中出现自增自减操作可能是为了生成高效的机器码,因为这些操作可以直接映射成CPU的指令
而Python、Ruty等现代语言的设计哲学是“优雅”、“明确”、“简单”。其设计目标之一是让代码具备高度的可阅读性。像JavaScript等语言也不推荐使用++、--运算符。

查看完整回答
反对 回复 2019-07-12
  • 3 回答
  • 0 关注
  • 503 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信