Skip to main content
 首页 » 编程设计

python 变量

2025年05月04日12oomusou

我有一个简单的问题。我从文件中读取一个字符串并存储在一个列表中(命名为:公式)。然后我将 (formula) 存储在另一个变量 (fstore = formula) 中以备后用。然后我对公式进行了更改,事实证明,fstore 也在发生变化。为什么这种情况不断发生?我希望 fstore 保持不变。我没有在程序的其他任何地方使用 fstore。我的赋值 (fstore = formula) 错了吗?

周杰伦

请您参考如下方法:

此处的重要区别在于可变 和不可变 数据类型。在 Python 中,列表是可变的,而元组是不可变的。这意味着当您像这样“更改”元组的值时:

t1 = (1, 2, 3)     # t1 points to (1, 2, 3) 
t2 = t1            # t2 points to the same tuple as t1 
t1 = (2, 3, 4)     # t1 points to a new tuple (2, 3, 4) 

您实际上是在创建一个全新的元组并分配 t1 以指向该新元组。 t2 仍然指向不能更改的旧元组,因为元组是不可变的。简而言之,如果您将一个不可变值分配给一个变量,您可以假设该值永远不会改变——除非您明确地为该变量分配一个新值。

但是当你改变一个列表的值时,你实际上改变了列表本身:

l1 = [1, 2, 3]     # l1 points to [1, 2, 3]  
l2 = l1            # l2 points to the same list as l1 
l1[0] = 5          # now [1, 2, 3] becomes [5, 2, 3] 

因为 l1 和 l2 都指向同一个列表,所以当其中一个改变时,它们都会改变。

要创建一个在 l1 更改时不会更改的副本,只需使用 list:

l2 = list(l1) 

或者使用切片表示法:

l2 = l1[:]