函数中的int vs列表的python内存位置

问题描述

背景

最近我在处理递归问题,我一直在处理全局变量与非全局变量以及内存相关的内容。在我的一些最新练习中,我注意到列表和整数之间存在很大差异。

让我们看下面的代码

def foo(x):
    x += 5

def bar(y):
    y.append(2)

def thr(p):
    p[0] += 2


if __name__ == '__main__':
    x = 0
    y = [1]
    p = [3]
    foo(x)
    bar(y)
    thr(p)
    print(x)
    print(y)
    print(p)

输出

0
[1,2]
[5]

请注意int并没有受到影响,但是列表和列表中的项确实受到影响。

我的问题

我知道列表和int之间存在巨大差异。根据我在其他语言(例如c)方面的经验,我可以假定差异有所增加,因为在传递int时,它是通过值传递的,而列表是通过引用传递的。

对吗?为什么有时似乎列表是通过值传递而有时是通过引用传递(强制使用lst.copy()之类的东西?

此外,我想知道如何在python中通过引用传递一个int(而不使用将其放入列表中作为唯一元素的东西)。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)