函数不return也能修改传入参数?可变对象和不可变对象

一、什么是可变对象与不可变对象?

  • 不可变对象:如整数、浮点数、字符串和元组等。在函数内部修改不可变对象时,实际上是创建了一个新的对象。
  • 可变对象:如列表、字典和张量(如 PyTorch 和 NumPy 中的张量)等。当您在函数中修改可变对象时,修改会反映到原始对象上。

尤其是做深度学习的同学们,大部分用到的参数类型是张量,所以会发现有的函数是没有返回值的!!不要以为没有返回值就没有修改参数。

二、举例

2.1 张量(可变对象)

2.2 整数(不可变对象)

可以看到对 my_int 的修改并没有直接影响原始整数。在函数 modify_integer 中,虽然 x 被修改了,但原始整数 my_int 的值是通过 += 创建了一个新的整数对象。最终,原始整数保持为 7。

2.3 整数没有return

如果上述modify_interger()函数没有返回

最后结果会返回None,并不会对输入的参数x有改变:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小老大MUTA️

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值