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

yizhihongxing

在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 graphviz画图详情

    下面我将为您详细讲解“Python Graphviz 画图”的完整攻略。 什么是 Graphviz? Graphviz 是 AT&T 实验室开发的一款开源可视化工具包,可以用于绘制各种类型的图。它的输入格式是纯文本格式,支持多种输出格式,包括 PNG、SVG、PDF 等等。因此,如果我们想要通过代码自动化地生成图像,或者将输出集成到Web应用程序中,…

    python 2023年5月19日
    00
  • python根据开头和结尾字符串获取中间字符串的方法

    获取中间字符串可以使用Python中字符串的切片、字符串的正则匹配或使用Python中内置的方法split()函数实现。其中,本文将介绍使用split()方法获取中间字符串的方法。 使用split()函数获取中间字符串 split()函数帮助我们将一个字符串按照指定的分隔符分解为多个字符串,并返回这些字符串组成的列表。因此,我们可以从这个列表的中间元素中获取…

    python 2023年6月5日
    00
  • Python3.6正式版新特性预览

    Python3.6正式版新特性预览 Python3.6正式版带来了很多新的语言特性和标准库改进。在本文中,我们将介绍这些新功能及其用法。 字面量字符串插值 Python3.6中新引入了一种字符串格式化方式——字面量字符串插值。我们可以使用大括号将表达式嵌入到字符串中。 示例: # 基本用法 name = "Alice" age = 20 …

    python 2023年5月13日
    00
  • Python命令行运行文件的实例方法

    以下是Python命令行运行文件的实例方法的完整攻略。 什么是Python命令行运行文件的实例方法? Python命令行运行文件的实例方法是指在终端中使用Python解释器直接运行Python脚本文件的一种方法。这种方法可以方便地在命令行中运行Python程序,不需要打开集成开发环境(IDE)或其他类似的工具。 如何使用Python命令行运行文件的实例方法?…

    python 2023年6月5日
    00
  • Python数据拟合实现最小二乘法示例解析

    对于“Python数据拟合实现最小二乘法”这个话题,我可以给你提供如下的攻略,希望有所帮助。 1. 为什么要使用最小二乘法(Least Squares) 首先,我们需要了解一下最小二乘法的概念和作用。最小二乘法是一种常用的线性回归算法,它可以用来拟合出一条直线或者曲线,这条直线或曲线能够最好地描述给定数据的趋势和特征。最小二乘法的核心思想,是通过使误差平方的…

    python 2023年6月3日
    00
  • python程序的组织结构详解

    Python程序由模块组成,每个模块包含自己的代码,可以定义变量、函数和类。一个Python程序可以是一个单一的模块,也可以是多个模块组成的包。 模块 模块的定义 Python模块是一个包含Python定义和声明的文件(通常是以.py为扩展名)。模块可以包含函数、类和变量。 # module.py def func(): print("Hello,…

    python 2023年5月14日
    00
  • 详谈tensorflow gfile文件的用法

    下面是详细的攻略: 详谈tensorflow.gfile文件的用法 在TensorFlow中,我们可以使用tensorflow.gfile模块来读写文件。该模块提供了一种跨平台的文件操作方式,可以在不同的操作系统上使用相同的代码。本文将手把手教你如何使用tensorflow.gfile模块读写文件,并提供两个示例说明。 读取文件 在TensorFlow中,我…

    python 2023年5月14日
    00
  • python中的字典使用分享

    非常感谢您对Python字典的关注。下面我就来为您详细讲解Python中的字典使用分享的完整攻略。 什么是Python中的字典? Python中的字典是一种非常常用的数据类型,它可以储存无序的键值对(key-value pairs),每个键对应着唯一一个值(value)。Python字典可以看做是一种哈希表的实现方式。字典的键必须是唯一的,且只能是不可变的数…

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