python值类型与引用类型

1. 引言

在Python中,每个值都属于一种数据类型。这些数据类型可以分为两大类:值类型(Value)和引用类型(Reference)。

2. 值类型

2.1 值类型的定义

值类型是指每个变量都保存了真实的数据值,变量之间互相独立,互不影响。在Python中,常见的值类型有整数(int)、浮点数(float)、布尔值(bool)和字符串(str)。

2.2 值类型的特点

2.2.1 值类型的复制

a = 10

b = a

a = 20

print(b) # 输出:10

在上面的例子中,当将变量a赋值给变量b时,实际上是将a的值(10)复制给了b。所以,当a的值改变时,并不会影响到b的值。

2.2.2 值类型的作为函数参数

def change_value(num):

num = 20

a = 10

change_value(a)

print(a) # 输出:10

在函数change_value中,我们将变量num的值改为20。但是,这并不会影响到变量a的值。因为在函数调用时,num参数的值是变量a的副本,所以对num的修改并不会影响到原来的变量a。

3. 引用类型

3.1 引用类型的定义

引用类型是指每个变量都保存了对象的引用(内存地址),变量之间共享同一个对象。在Python中,常见的引用类型有列表(list)、字典(dict)和集合(set)。

3.2 引用类型的特点

3.2.1 引用类型的复制

a = [1, 2, 3]

b = a

a.append(4)

print(b) # 输出:[1, 2, 3, 4]

在上面的例子中,当将列表a赋值给变量b时,实际上是将a所引用的对象(列表)的引用复制给了b。所以,当我们修改a所引用的对象时,b也会受到影响。

3.2.2 引用类型的作为函数参数

def change_list(lst):

lst.append(4)

a = [1, 2, 3]

change_list(a)

print(a) # 输出:[1, 2, 3, 4]

在函数change_list中,我们通过引用类型的参数lst来修改列表a。因为lst保存了a所引用的对象的引用,所以对lst的修改会直接影响到原来的列表a。

4. 总结

通过本文的介绍,我们了解到Python中存在两种数据类型:值类型和引用类型。值类型是每个变量都保存了真实的数据值,而引用类型是每个变量都保存了对象的引用。值类型的变量之间互相独立,互不影响,而引用类型的变量之间共享同一个对象。

请注意,本文讨论的是Python中的值类型和引用类型的一般概念,实际上Python的变量是没有类型的,变量名只是一个标签,它指向存储在内存中的一个对象。因此,Python中的变量更像是引用类型,但是在一些操作中,我们可以看到一些值类型的特点。

后端开发标签