鱼C论坛

 找回密码
 立即注册
查看: 1257|回复: 3

[已解决]没有 return 也能修改数据?

[复制链接]
发表于 2021-3-30 18:05:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. def addinterest(balance, rate):
  2.     for each in range(len(balance)):
  3.         balance[each] = balance[each] * (1+rate)
  4.     return


  5. def test():
  6.     amount = [1000, 2000, 3000, 4000, 5000]
  7.     rate = 0.05
  8.     addinterest(amount, rate)
  9.     print(amount)


  10. if __name__ == '__main__':
  11.     test()
复制代码


运行结果:

  1. [1050.0, 2100.0, 3150.0, 4200.0, 5250.0]
复制代码


所以,为什么呢?return 不返回任何东西,也没有变量进行接收
最佳答案
2021-3-30 18:08:33
列表,字典,集合啥的都是帮奇葩..
它们不分全局变量和局部变量之差的,在函数内也可以改变别的地方的变量
比如:
  1. def func(lst, val):
  2.     lst.append(val)

  3. def func2():
  4.     a = []
  5.     for i in range(5):
  6.         func(a, i)
  7.     print(a)

  8. func2()
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-3-30 18:08:33 | 显示全部楼层    本楼为最佳答案   
列表,字典,集合啥的都是帮奇葩..
它们不分全局变量和局部变量之差的,在函数内也可以改变别的地方的变量
比如:
  1. def func(lst, val):
  2.     lst.append(val)

  3. def func2():
  4.     a = []
  5.     for i in range(5):
  6.         func(a, i)
  7.     print(a)

  8. func2()
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-30 18:20:08 | 显示全部楼层
本帖最后由 逃兵 于 2021-3-30 18:34 编辑

列表,字典,集合都是可变容器

return 是返回值,用来返回数据

而列表的 .append()
集合的 .add()
等等

都属于容器的方法



这个函数没有return,所以他依旧返回None。
只是他调用容器,让容器自己去做了一些事情,使得容器内部发生了变化。(append() remove())
这跟函数本身有没有返回值没关系


在python中,字符串和元组是不可变的

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
Daniel_Zhang + 5 + 5 + 3 谢谢

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-30 21:36:28 | 显示全部楼层
不是纯函数呗

评分

参与人数 1荣誉 +1 鱼币 +3 贡献 +2 收起 理由
Daniel_Zhang + 1 + 3 + 2 鱼C有你更精彩^_^

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-19 11:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表