Alliot's blog

为什么Python中没有"a++"这种写法

  一开始学习 Python 的时候习惯性的使用 C 中的 a++ 这种写法,发现会报 SyntaxError: invalid syntax 错误,为什么 Python 没有自增运算符的这种写法呢?
我们可以看一下 Python 下:

1
2
3
4
5
6
7
>>> a = 2
>>> b = 2
>>> id(a) #id() 函数用于获取对象的内存地址。
140732976575344
>>> id(b)
140732976575344
>>>

再来看看 C 语言中:

1
2
3
4
5
6
7
8
9
#include<stdio.h>
int main()
{
int a = 1;
int b = 1;
printf("%d\n",&a);
printf("%d\n",&b);
return 0;
}

输出:

1
2
6356732
6356728

  这里可以看出 Python 在变量的存储上与 C 语言的不同,在 C 语言中,值的存储以变量名来区分,一个变量具有单独的地址空间;而 Python 中则不一样,只要值是相同的,不管你的变量名是什么,它们的地址都是相同的,也就是说, Python 允许一个值被多个变量名称绑定。
  这里说明一下,在脚本式编程环境中是这样,但是在交互式编程环境下,Python 为了优化速度,使用了小整数对象池, 避免为整数频繁申请和销毁内存空间,编译器会有一个小整数池的概念,小整数的定义是 [-5, 256] 这些整数对象是提前建立好的,不会被垃圾回收,也就是说,变量在这个范围内是会按照前面所说的,共用内存地址,超过这个值则使用单独的内存地址。 如:

1
2
3
4
5
6
>>> a=1000
>>> b=1000
>>> id(a);id(b)
266662366224
266617350384
>>>


参考资料: @wangyunfeis

------ 本文结束 ------

本文标题:为什么Python中没有"a++"这种写法

文章作者:Alliot

发布时间:2018年11月26日 - 19:11

最后更新:2023年03月22日 - 00:03

原始链接:https://www.iots.vip/post/python-1.html

许可协议: 署名-非商业性使用-相同方式共享 4.0 国际 转载请保留原文链接及作者。

若文章为您解决燃眉之急或是带来些许明朗,不妨打赏 Alliot 一杯香茗或是一杯咖啡