问题描述
背景
最近我在处理递归问题,我一直在处理全局变量与非全局变量以及内存相关的内容。在我的一些最新练习中,我注意到列表和整数之间存在很大差异。
让我们看下面的代码:
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 (将#修改为@)