为什么 Python 中的变量赋值行为不同?

问题描述 投票:0回答:1

我是Python新手,我对以下代码感到很困惑:

示例1:

n = 1
m = n
n = 2
print(n)   # 2
print(m)   # 1

示例2:

names = ["a", "b", "c"]
visitor = names
names.pop()
print(names)      # ['a', 'b']
print(visitor)    # ['a', 'b']

示例 1 显示

n
为 1,
m
为 1。然而,示例 2 显示
names
是 ['a', 'b'],
visitor
也是 ['a', 'b'] '].

对我来说,示例 1 和示例 2 很相似,所以我想知道为什么结果如此不同?谢谢你。

python variables
1个回答
0
投票

在Python中,当你像这样分配一个数组时

a = ['a', 'b', 'c']
b = a

b
现在是对
a
的引用。这意味着
a
上的任何更改都会反映在
b
中,反之亦然。

您可能想要做的是创建一个副本,创建一个名为

a
b
副本。

a = ['a', 'b', 'c']
b = a.copy()

现在,当您更改

a
时,
b
不会更改,或者如果您更改
b
a
也不会更改。因为
b
现在是一个具有相同值的全新数组。

a = ['a', 'b', 'c']
b = a.copy()
a.pop()
print(a)
print(b)
© www.soinside.com 2019 - 2024. All rights reserved.