哪些python数据类型像指针?

时间:2019-06-06 22:57:46

标签: python types

例如,下面的词典更新列表中的更改,但不更新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]}

1 个答案:

答案 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]

在您的示例中,您更改了字典id变量的引用值,但没有更改列表l的引用值,您实际上使用了引用并更改了一项在列表中。发生这种情况是因为列表是可变的,而Python整数不是可变的,所以您进行了不同的操作。分配后,您将无法使用变量d来更改决定i中的内容,您需要为此进行d['i'] = 0