gpt4 book ai didi

python - 字典和列表在传递给函数时看起来是不可变的

转载 作者:太空宇宙 更新时间:2023-11-04 10:23:57 25 4
gpt4 key购买 nike

我认为字典和列表在 Python 中是可变的。如何解释这种行为?

#!/usr/bin/python3                                                             

def change_list(l):
l = ['changed!']

def change_dict(d):
d = {'changed!'}

mydict = {'bob': ['blah', 5], 'asdf' : 'asdf'}
change_dict(mydict)
print(mydict)

mylist = ['hello', 'foo', 'bar']
change_list(mylist)
print(mylist)

输出:

$ python3 test3.py 
{'asdf': 'asdf', 'bob': ['blah', 5]}
['hello', 'foo', 'bar']

预期输出:

$ python3 test3.py 
{'changed!'}
['changed!']

最佳答案

也许“图片”会有所帮助:

d = ['a', 'list']

# d -> [ 0 , 1 ]
# / |
# 'a' 'list'

d.append('changed')

# d -> [ 0 , 1 , 2 ]
# / | \
# 'a' 'list' 'changed'

d[0] = 'my'

# d -> [ 0 , 1 , 2 ]
# / | \
# 'my' 'list' 'changed'

d = []

# [] <- d [ 0 , 1 , 2 ]
# / | \
# 'my' 'list' 'changed'

重新分配名称 d(无论它是函数内部的参数还是其他)不会影响它之前引用的列表。

This很好地介绍了名称/标识符如何在 Python 中工作,以及它如何与例如交互。赋值和不变性。

关于python - 字典和列表在传递给函数时看起来是不可变的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30625537/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com