1 Python-纯字母字符串内存地址一样,否则不一样,如下案例
str1="abc"
str2="abc" #同样内容的纯字母字符串,str1 和 str2 内存地址一样,如果包含了空格,中文字符,特殊字符等,两者内容不一样,如下案例
print(id(str1))
print(id(str2))
str2="abd"
print(id(str1))#对str2重新赋值,str1的地址仍然不变
print(id(str2))
str1="abc dd"#有空格 str1 str2 地址不一样
str2="abc dd"
print(id(str1))
print(id(str2))
str1="abc@"#有特殊字符 str1 str2 地址不一样
str2="abc@"
print(id(str1))
print(id(str2))
运行结果如下:
1440505762224
1440505762224
1440505762224
1440547873968
1440547874992
1440547873904
1440547873840
1440547873520
2. 对于整型共享地址方面:
[-5到256] (包含2个端点值)这个区间是共享内存地址,超过这个不共享内存地址。
举例如下:
#整数[-5到256]这个区间是共享内存地址,超过这个不共享内存地址。
inta=-5 #整数[-5到256]这个区间是共享内存地址,超过这个不共享内存地址。
intb=-5
print(id(inta))
print(id(intb))
print("++++++")
inta=256 #整数[-5到256]这个区间是共享内存地址,超过这个不共享内存地址。
intb=256
print(id(inta))
print(id(intb))
print("++++++")
inta=257#大于256 不共享内存地址
intb=257
print(id(inta))
print(id(intb))
print("++++++")
inta=-6#小于-5 不共享内存地址
intb=-6
print(id(inta))
print(id(intb))
print("++++++")
运行结果如下:
140714010255568
140714010255568
++++++
140714010263920
140714010263920
++++++
1440537599312
1440537599760
++++++
1440537598960
1440537599184
++++++
3 #浮点数的内存地址都不一样,哪怕是完全相同的数字
floata=2.0 #浮点数的内存地址都不一样,哪怕是完全相同的数字
floatb=2.0
print(id(floata))
print(id(floatb))
运行结果如下:
1440537599216
1440537599632