欢迎访问宙启技术站
智能推送

理解Python中可变和不可变变量的区别

发布时间:2023-12-17 16:28:02

在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的更改而更改。

总结来说,可变变量的值修改会在内存中直接更新,而不可变变量的值修改会创建一个新的变量来存储修改后的值。