鱼C论坛

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

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

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

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

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

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


def test():
    amount = [1000, 2000, 3000, 4000, 5000]
    rate = 0.05
    addinterest(amount, rate)
    print(amount)


if __name__ == '__main__':
    test()

运行结果:
[1050.0, 2100.0, 3150.0, 4200.0, 5250.0]

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

def func2():
    a = []
    for i in range(5):
        func(a, i)
    print(a)

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

使用道具 举报

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

def func2():
    a = []
    for i in range(5):
        func(a, i)
    print(a)

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, 2025-1-16 03:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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