深度学习 pytorch实践 day1

《深度学习之PyTorch物体检测实战》 学习笔记 python中的 可变对象不可变对象

python 中 对象 和 变量概念

对象:内存中存储数据的实体,有明确的类型。python中一切都是对象,函数也属于对象。

变量:指向对象的指针,对象的引用。作为弱类型语言,python中的变量是没有类型的。

python中 可变对象 与 不可变对象

python中的对象,还可以进一步分为可变对象和不可变对象。

这一点用了这么久python,还第一次听说。虽然在另一个角度知道这么回事。

不可变对象:对象对应内存中的值不会变,因此如果指向该对象的变量被改变了,python会重新开辟一片内存,变量在指向这个新的内存,包括 int, float, str, tuple 等。

可变对象:对象对应内存中的值可以改变,因此变量改变后,该对象也会改变,即原地修改,如 list, dict, set 等。

这里以int变量为例做一个简单的测试,说明不可变对象的含义。

1
2
3
4
5
6
7
8
9
10
11
a = 1
b = 1
c = a + 0

print('id(a): ', id(a))
print('id(b): ', id(b))
print('id(c): ', id(c))

print('id(a)==id(b) ', id(a)==id(b))
print('id(a)==id(c) ', id(a)==id(c))
print('id(b)==id(c) ', id(b)==id(c))