Python中值类型和引用类型有何本质区别?

2026-04-13 20:511阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1026个文字,预计阅读时间需要5分钟。

Python中值类型和引用类型有何本质区别?

在Python中,函数参数的传递有两种方式:值传递和引用传递。

值传递是指在函数调用时,将实参的值复制一份传递给形参,形参在函数内部对值的修改不会影响实参。

引用传递是指在函数调用时,将实参的内存地址传递给形参,形参在函数内部对地址的修改将直接影响实参。

值传递示例:pythondef change_value(a): a=10

num=5change_value(num)print(num) # 输出:5,实参的值未被改变

引用传递示例:pythondef change_reference(a): a[0]=10

num_list=[5]change_reference(num_list)print(num_list[0]) # 输出:10,实参的值被改变

在Python中,函数参数的传递有两种方式:值传递和引用传递。

值传递

值传递是指在函数调用时,实参将自己的值传递给形参,形参获得了实参的一个拷贝,这样函数内部对形参的任何改变都不会影响实参本身。在Python中,不可变对象(如数字、字符串、元组等)采用值传递。

下面是一个例子:

def change_num(num): num += 10 return num a = 5 print(change_num(a)) # 输出15 print(a) # 输出5

在这个例子中,我们定义了一个函数change_num,它接受一个参数num,并将其增加10后返回。我们将变量a赋值为5,并将其作为参数传递给函数change_num,函数执行后返回15,但是变量a的值仍然是5。

Python中值类型和引用类型有何本质区别?

引用传递

引用传递是指在函数调用时,实参传递给形参的是它的引用,即实参的地址,这样函数内部对形参的任何修改都会影响实参的值。在Python中,可变对象(如列表、字典等)采用引用传递。

下面是一个例子:

def change_list(list): list.append(4) return list a = [1, 2, 3] print(change_list(a)) # 输出[1, 2, 3, 4] print(a) # 输出[1, 2, 3, 4]

在这个例子中,我们定义了一个函数change_list,它接受一个参数list,并在列表末尾添加一个元素4后返回。我们将列表[1, 2, 3]赋值给变量a,并将其作为参数传递给函数change_list,函数执行后返回[1, 2, 3, 4],同时变量a的值也变成了[1, 2, 3, 4]。

自由互联热门推荐:PDF电子发票识别软件,一键识别电子发票并导入到Excel中!10大顶级数据挖掘软件!人工智能的十大作用!

需要注意的是,虽然Python的函数参数传递采用的是值传递和引用传递的组合方式,但在函数内部重新给一个可变对象赋值的时候,它就变成了一个新的对象,这时函数内部的变量与外部变量已经没有关联了,因此不会影响到外部变量的值。下面是一个例子:

def change_string(s): s = "Hello, world!" my_string = "Python" change_string(my_string) print(my_string) # 输出 "Python"

在这个例子中,我们创建了一个名为 my_string 的字符串,并将其作为实参传递给 change_string 函数。函数内部将字符串改变为 Hello, world!。但是,当函数返回后,我们打印 my_string 的值,发现其值仍然是 "Python",这是因为函数参数的传递是按值传递的。

总结

总结一下,Python 中的函数参数传递可以归纳为以下两种情况:

  • 对于不可变类型的参数(例如数字、字符串、元组等),函数内部的修改不会影响到函数外部的变量;
  • 对于可变类型的参数(例如列表、字典等),函数内部的修改会影响到函数外部的变量。

本文共计1026个文字,预计阅读时间需要5分钟。

Python中值类型和引用类型有何本质区别?

在Python中,函数参数的传递有两种方式:值传递和引用传递。

值传递是指在函数调用时,将实参的值复制一份传递给形参,形参在函数内部对值的修改不会影响实参。

引用传递是指在函数调用时,将实参的内存地址传递给形参,形参在函数内部对地址的修改将直接影响实参。

值传递示例:pythondef change_value(a): a=10

num=5change_value(num)print(num) # 输出:5,实参的值未被改变

引用传递示例:pythondef change_reference(a): a[0]=10

num_list=[5]change_reference(num_list)print(num_list[0]) # 输出:10,实参的值被改变

在Python中,函数参数的传递有两种方式:值传递和引用传递。

值传递

值传递是指在函数调用时,实参将自己的值传递给形参,形参获得了实参的一个拷贝,这样函数内部对形参的任何改变都不会影响实参本身。在Python中,不可变对象(如数字、字符串、元组等)采用值传递。

下面是一个例子:

def change_num(num): num += 10 return num a = 5 print(change_num(a)) # 输出15 print(a) # 输出5

在这个例子中,我们定义了一个函数change_num,它接受一个参数num,并将其增加10后返回。我们将变量a赋值为5,并将其作为参数传递给函数change_num,函数执行后返回15,但是变量a的值仍然是5。

Python中值类型和引用类型有何本质区别?

引用传递

引用传递是指在函数调用时,实参传递给形参的是它的引用,即实参的地址,这样函数内部对形参的任何修改都会影响实参的值。在Python中,可变对象(如列表、字典等)采用引用传递。

下面是一个例子:

def change_list(list): list.append(4) return list a = [1, 2, 3] print(change_list(a)) # 输出[1, 2, 3, 4] print(a) # 输出[1, 2, 3, 4]

在这个例子中,我们定义了一个函数change_list,它接受一个参数list,并在列表末尾添加一个元素4后返回。我们将列表[1, 2, 3]赋值给变量a,并将其作为参数传递给函数change_list,函数执行后返回[1, 2, 3, 4],同时变量a的值也变成了[1, 2, 3, 4]。

自由互联热门推荐:PDF电子发票识别软件,一键识别电子发票并导入到Excel中!10大顶级数据挖掘软件!人工智能的十大作用!

需要注意的是,虽然Python的函数参数传递采用的是值传递和引用传递的组合方式,但在函数内部重新给一个可变对象赋值的时候,它就变成了一个新的对象,这时函数内部的变量与外部变量已经没有关联了,因此不会影响到外部变量的值。下面是一个例子:

def change_string(s): s = "Hello, world!" my_string = "Python" change_string(my_string) print(my_string) # 输出 "Python"

在这个例子中,我们创建了一个名为 my_string 的字符串,并将其作为实参传递给 change_string 函数。函数内部将字符串改变为 Hello, world!。但是,当函数返回后,我们打印 my_string 的值,发现其值仍然是 "Python",这是因为函数参数的传递是按值传递的。

总结

总结一下,Python 中的函数参数传递可以归纳为以下两种情况:

  • 对于不可变类型的参数(例如数字、字符串、元组等),函数内部的修改不会影响到函数外部的变量;
  • 对于可变类型的参数(例如列表、字典等),函数内部的修改会影响到函数外部的变量。