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框架django项目部署相关知识详解

    Python框架Django项目部署相关知识详解 Django是一个流行的Python Web框架,用于快速开发Web应用程序。在开发完成后,我们需要将Django项目部署到服务器上,以便用户可以访问我们的应用程序。本文将详细讲解Python框架Django项目部署相关知识,包括服务器选择、部署方式、数据库配置、静态文件处理等,并提供两个示例。 服务器选择 …

    python 2023年5月15日
    00
  • 浅谈Python的字典键名可以是哪些类型

    下面将详细讲解一下Python中字典键名可以是哪些类型。 1. 字典键名类型的基本要求 字典是Python中常用的数据类型,其中键名是字典中重要的一部分,而Python的字典键名允许的数据类型与其他语言不同,具体如下: 1.键名的类型必须是不可变的,即不能是列表、集合、字典等可变类型。 2.键名的类型必须可以通过哈希算法求出对应的哈希值。 Python中的哈…

    python 2023年5月13日
    00
  • Linux上为你的任务创建一个自定义的系统托盘指示器

    下面我来详细讲解在Linux上为你的任务创建一个自定义的系统托盘指示器的完整攻略。 简介 系统托盘指示器是在桌面系统的系统托盘区域中显示的小图标,它们可以用来向用户显示某种状态或者提供某些功能。Linux系统上常见的系统托盘指示器有电量指示器、网络状态指示器等等。本文主要介绍如何为自己的应用程序创建一个自定义的系统托盘指示器。 选择一个适合的库 在Linux…

    python 2023年6月3日
    00
  • Python爬取网页信息的示例

    让我为您详细讲解一下Python爬取网页信息的攻略: 爬取网页信息的步骤 第一步:确定目标网页的访问方式 在进行爬取网页信息之前,我们首先需要明确目标网页的访问方式。通常,我们可以使用Python中的requests模块对网页进行访问,获取网页内容。 第二步:获取网页内容 通过requests模块可以快速地获取网页内容,示例如下: import reques…

    python 2023年5月14日
    00
  • python编写一个GUI倒计时器

    下面是Python编写一个GUI倒计时器的完整攻略: 1. 准备工作 在编写GUI倒计时器前,我们需要安装Python以及Tkinter库。Python是一种流行的高级编程语言,而Tkinter是Python自带的图形用户界面(GUI)库。 安装Python可以前往官网下载,安装过程中需要选择添加Python到系统路径;安装完成后,打开命令行(Windows…

    python 2023年5月18日
    00
  • python读取json数据还原表格批量转换成html

    Python读取JSON数据还原表格批量转换成HTML是一种常见的数据处理技术,可以用于将JSON数据转换为HTML表格。以下是Python读取JSON数据还原表格批量转换成HTML的完整攻略,包含两个示例。 方法1:使用pandas库将JSON数据转换为HTML表格 pandas是一个Python库,可以将JSON数据转换为HTML表格。以下是一个示例,可…

    python 2023年5月15日
    00
  • python字符串常见使用操作方法介绍

    下面为您介绍Python字符串常见使用操作方法: 1. 字符串的创建和输出 Python中的字符串可以使用单引号、双引号、三引号等方式创建。我们可以使用print()函数输出字符串。 例如,我们可以使用以下代码创建字符串,并输出: # 使用单引号创建字符串 str1 = ‘Hello, World!’ print(str1) # 使用双引号创建字符串 str…

    python 2023年5月20日
    00
  • Python+xlwings制作天气预报表

    下面是关于 “Python+xlwings制作天气预报表”的完整实例教程。 介绍 Python 是一种广泛应用于数据处理、数据分析和机器学习的高级编程语言,而 xlwings 是一个用于在 Excel 中使用 Python 的工具。本教程将向你展示如何使用 Python 和 xlwings 制作一个天气预报表。 前置条件 在开始之前,你需要事先安装好 Pyt…

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