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

Python015

为什么 Python,Ruby 等语言弃用了自增运算符,第1张

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

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

---------------

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

i += 1:

6 LOAD_FAST0 (a)

9 LOAD_CONST 1 (1)

12 INPLACE_ADD

13 STORE_FAST 0 (a)

i = i + 1

6 LOAD_FAST0 (a)

9 LOAD_CONST 1 (1)

12 BINARY_ADD

13 STORE_FAST 0 (a)

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

4台数据库,第一台mysql主键从1开始每次加4,第二台从2开始每次加4,以此类推。。2、搭建sequence server2.1、选用N台mysql作为sequence server,防止单点故障。2.2、每个server上的每张表都代表一个序列,每张表也只有一条记录(表级锁,选用myisam引擎)。2.3、第一台server的序列从1开始每次加N,第二台从2开始每次加N。2.4、获取时先从第一台server上获取nextVal并修改nextVal加N,如果第一台Server获取失败,则从第二台Server上获取。。

字符串的自增,用程序实现吧,在一个表里面用一个字段来保存上一次插入表中的编号即可。

如果你的字符串是可以直接转换为 int 型的话,用sql max最大的更好一些, 但如果你的字符串型似 C0001 , 直接用sql 的话还要拆分字符串,就没有用程序来方便了。