一、什么是可变对象与不可变对象?
- 不可变对象:如整数、浮点数、字符串和元组等。在函数内部修改不可变对象时,实际上是创建了一个新的对象。
- 可变对象:如列表、字典和张量(如 PyTorch 和 NumPy 中的张量)等。当您在函数中修改可变对象时,修改会反映到原始对象上。
尤其是做深度学习的同学们,大部分用到的参数类型是张量,所以会发现有的函数是没有返回值的!!不要以为没有返回值就没有修改参数。
二、举例
2.1 张量(可变对象)
2.2 整数(不可变对象)
可以看到对 my_int
的修改并没有直接影响原始整数。在函数 modify_integer
中,虽然 x
被修改了,但原始整数 my_int
的值是通过 +=
创建了一个新的整数对象。最终,原始整数保持为 7。
2.3 整数没有return
如果上述modify_interger()函数没有返回
最后结果会返回None,并不会对输入的参数x有改变: