如何解决函数中的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 举报,一经查实,本站将立刻删除。