Daniel_Zhang 发表于 2021-3-30 18:05:55

没有 return 也能修改数据?

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


def test():
    amount =
    rate = 0.05
    addinterest(amount, rate)
    print(amount)


if __name__ == '__main__':
    test()

运行结果:



所以,为什么呢?return 不返回任何东西,也没有变量进行接收{:10_245:}

qiuyouzhi 发表于 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()

逃兵 发表于 2021-3-30 18:20:08

本帖最后由 逃兵 于 2021-3-30 18:34 编辑

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

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

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

都属于容器的方法



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


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

kogawananari 发表于 2021-3-30 21:36:28

{:10_263:}不是纯函数呗
页: [1]
查看完整版本: 没有 return 也能修改数据?