概述
博主在看某书上的python代码时产生疑问:为什么python不像c++,java一样支持变量的自加与自减操作呢?这样的话一些代码就会简洁不少,于是查找了一些资料,但是觉得都没有讲的很明白,这里把他们讲到的涉及的一些知识点介绍一下。
python与c++中数值变量存储机制的不同
我们先来看python的一段代码:
a = 5
print("
a = ",a,"地址为:",id(a))
a += 1
print("a+=1后
","a = ",a,"地址为:",id(a))
b = 5
print("
b = ",b,"地址为:",id(b))
c = b
print("
c = ",c,"地址为:",id(c))
a =
5 地址为: 140451760084256
a+=1后
a =
6 地址为: 140451760084288
b =
5 地址为: 140451760084256
c =
5 地址为: 140451760084256
我们看到a+=1之后,a所指向的存储地址已经改变了,变量b和变量c都等于5,这两个变量所指向的地址为数值5所在的地址。
我们下面来看c++的一段类似的程序:
#include <iostream>
using namespace std;
int main()
{
int a = 5;
cout <<"
a="<<a<<"地址为:"<< &a << 'n';
a++;
cout <<"a++后"<<"
a="<<a<<"地址为:"<< &a<<'n';
a+=1;
cout <<"a+=1后"<<"
a="<<a<<"地址为:"<< &a<<'n';
int b=5;
cout<< "
b="<<b<<"地址为:"<<&b<<'n';
int c = b;
cout<< "
c="<<c<<"地址为:"<<&c;
return 0;
}
a=5地址为:0x7fff6ea1ea78
a++后
a=6地址为:0x7fff6ea1ea78
a+=1后
a=7地址为:0x7fff6ea1ea78
b=5地址为:0x7fff6ea1ea74
c=5地址为:0x7fff6ea1ea70
我们这里看到有明显的不同,a++与a+=1之后变量a所指向的地址并没有改变;虽然变量b=c=5但是这两个变量所指向的地址也并不是a所指向的那个地址。
综上我们发现:
C++
1.是以变量名字来分配内存地址的,只要数值的变量名字不同,那么它们就分配不同的地址。
2.a++与a+=1的操作下a所指向的内存空间都不会改变(也不需要改变,这样设计是合理的)
Python
1.Python中在某一个数值区间内会有一个整数池,无论你的整数叫什么名字,只要和池中某个整数值一样,那它俩就会分配为同一个存储空间,不同的变量名都指向了这个空间。
2.a+=1操作下,由于内容改变了,所以a所指向的内存空间也需要改变(如果所指向的内存空间不改变的话,而数值变量b也指向了这片空间,那么改变a的同时就改变了b,这不是我们希望的,所以变量a的指向必须改变,这样设计是合理的)。
最后
以上就是自由诺言为你收集整理的[Python]Python中为什么不支持自加自减操作的全部内容,希望文章能够帮你解决[Python]Python中为什么不支持自加自减操作所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复