Python 值类型和引用类型有什么区别?

在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中,可变对象(如列表、字典等)采用引用传递。

下面是一个例子:

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]。

需要注意的是,虽然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 中的函数参数传递可以归纳为以下两种情况:

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

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python 值类型和引用类型有什么区别? - Python技术站

(0)
上一篇 2023年2月20日 下午2:11
下一篇 2023年2月20日 下午9:18

相关文章

  • 使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二)

    在这篇文章中,我们将使用 Python 中的 tkinter 库来制作简单的 GUI 界面,并演示如何将其打包成 exe 文件。 介绍 Tkinter 是 Python 自带的一个图形用户界面(GUI)工具包,它基于 tk 这个开源的工具包,不需要安装额外的软件包,可以很方便地在 Python 中创建 GUI 应用程序。 安装 Tkinter 在大多数情况下…

    python 2023年6月13日
    00
  • python爬虫实现POST request payload形式的请求

    以下是关于“Python爬虫实现POST request payload形式的请求”的完整攻略: Python爬虫实现POST request payload形式的请求 在Python爬虫中,我们经常需要使用POST请求来提交数据。有时候,我们需要使用request payload形式来提交数据。以下是Python爬虫实现POST request paylo…

    python 2023年5月15日
    00
  • Python 获取当前所在目录的方法详解

    标题 Python 获取当前所在目录的方法详解 背景在 Python 中,经常需要获取当前所在目录。然而,Python 中有多种实现获取当前目录的方式,本文将对这些方法进行详细介绍,并提供示例说明。 正文1.os 模块 可以使用 Python 内置库 os 的 getcwd() 方法来获取当前所在目录。getcwd() 方法返回当前工作目录的绝对路径。以下是…

    python 2023年6月2日
    00
  • python中将字典转换成其json字符串

    将字典转换成JSON字符串在Python中非常简单,只需要使用内置的json模块即可。 下面是将字典转换成JSON字符串的完整攻略: 步骤一:导入json模块 import json 首先需要导入json模块,以便进行JSON字符串的转换。 步骤二:准备数据 data = { "name": "Tom", "…

    python 2023年5月13日
    00
  • 在 python 3.4.7 的 pool.map 函数中添加额外的随机参数作为参数

    【问题标题】:Adding additional random parameter as an argument in pool.map function in python 3.4.7在 python 3.4.7 的 pool.map 函数中添加额外的随机参数作为参数 【发布时间】:2023-04-06 07:02:01 【问题描述】: 我想在大型数据集上…

    Python开发 2023年4月7日
    00
  • python的运算符与表达式你真的了解吗

    Python 运算符与表达式攻略 什么是运算符 在 Python 中,运算符是用来进行各种数学运算或比较操作的符号,例如:+、-、*、/等等。表达式则是由运算符和操作数共同构成的一个结构。 运算符的分类 Python 中的运算符可以分类为以下几类: 算术运算符 赋值运算符 比较运算符 逻辑运算符 身份运算符 成员运算符 位运算符 在接下来的内容中,我们会对以…

    python 2023年6月5日
    00
  • python如何实现复制目录到指定目录

    下面是 Python 如何实现复制目录到指定目录的完整攻略。 1. 使用 shutil 模块中的 copytree 函数进行复制 shutil 是 Python 标准库中的一个文件操作库,其中提供了 copytree 函数,可以用于将一个目录的全部文件复制到指定的目录。 以下是一个示例代码: import shutil # 定义源目录和目标目录 src_di…

    python 2023年6月5日
    00
  • 对python调用RPC接口的实例详解

    对Python调用RPC接口的实例详解 什么是RPC RPC(Remote Procedure Call)即远程过程调用,是一种通过网络从远程计算机上请求服务,而不需要了解底层网络技术的协议。它是通信协议和通信机制的组合体,允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不需要显示编码这个调用的细节。 RPC协议假定某些传输协议的存…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部