例如,下面的词典更新列表中的更改,但不更新int。
告诉我在本示例中它将像int还是类似于list的数据类型的属性的名称是什么?
构建类时如何设置此属性?
是否有一种方法可以使示例中的“ i”变量的行为类似于“ l”变量?
i = 1
l = [1]
d = {'i':i,'l':l}
i = 0
l[0] = 0
print(d) # {'i': 1, 'l': [0]}
答案 0 :(得分:0)
Python通过赋值传递事物,因此基本上Python总是传递对对象的引用,但是引用是按值传递的。
不更改引用值的示例:
def foo(list_):
list_.append(0)
l = [3, 2, 1]
foo(l)
# l = [3, 2, 1, 0]
现在将其更改:
def foo(list_):
list_ = [1, 2, 3]
l = [3, 2, 1]
foo(l)
# l = [1, 2, 3]
您还可以获取列表的副本:
def foo(list_):
list_copy = list_.copy()
list_copy.append(0)
l = [3, 2, 1]
foo(l)
# l = [3, 2, 1]
在您的示例中,您更改了字典i
中d
变量的引用值,但没有更改列表l
的引用值,您实际上使用了引用并更改了一项在列表中。发生这种情况是因为列表是可变的,而Python整数不是可变的,所以您进行了不同的操作。分配后,您将无法使用变量d
来更改决定i
中的内容,您需要为此进行d['i'] = 0
。