理解Python中可变和不可变变量的区别
在Python中,变量是存储数据的容器。可变变量和不可变变量的主要区别在于,当可变变量的值发生改变时,内存中的数据会被更新;而不可变变量的值发生改变时,会创建一个新的变量来存储修改后的值。
1. 不可变变量:
Python的不可变变量包括数字、布尔值、字符串和元组。下面是一些示例:
(a)数字:
num1 = 10
num2 = num1
num1 = 20
print(num1) # 输出20
print(num2) # 输出10
在上面的例子中,我们将num1的值赋给了num2,然后将num1的值修改为20。由于数字是不可变的,num2的值仍然是10,不会受到num1的修改影响。
(b)布尔值:
bool1 = True
bool2 = bool1
bool1 = False
print(bool1) # 输出False
print(bool2) # 输出True
与数字类似,布尔值的不可变性意味着bool2的值不会受bool1的更改的影响。
(c)字符串:
str1 = "Hello"
str2 = str1
str1 = "World"
print(str1) # 输出"World"
print(str2) # 输出"Hello"
字符串也是不可变的,所以str2的值仍然是"Hello",而不会受str1的更改影响。
(d)元组:
tuple1 = (1, 2, 3)
tuple2 = tuple1
tuple1 = (4, 5, 6)
print(tuple1) # 输出(4, 5, 6)
print(tuple2) # 输出(1, 2, 3)
与上述示例类似,元组的不可变性意味着tuple2的值不会受tuple1的更改的影响。
2. 可变变量:
Python的可变变量包括列表和字典。下面是一些示例:
(a)列表:
list1 = [1, 2, 3]
list2 = list1
list1.append(4)
print(list1) # 输出[1, 2, 3, 4]
print(list2) # 输出[1, 2, 3, 4]
在上面的例子中,我们将list1的值赋给了list2,并向list1添加了一个元素。由于列表是可变的,list2的值也随之改变,反映了list1的更改。
(b)字典:
dict1 = {'name': 'John', 'age': 25}
dict2 = dict1
dict1['age'] = 30
print(dict1) # 输出{'name': 'John', 'age': 30}
print(dict2) # 输出{'name': 'John', 'age': 30}
与列表类似,字典的可变性意味着dict2的值也随dict1的更改而更改。
总结来说,可变变量的值修改会在内存中直接更新,而不可变变量的值修改会创建一个新的变量来存储修改后的值。
