python 引用传递和值传递详解(实参,形参)

Python 引用传递和值传递详解(实参,形参)

在 Python 中,函数传递参数既可以是引用传递(传递的是对象的指针),也可以是值传递(传递的是对象的值)。理解这两种传递方式的区别,可以帮助我们更加灵活地使用 Python,编写出更加优秀的程序。

值传递

值传递是指在调用函数时,将实际参数的值复制一份传递给形式参数,在函数内修改形式参数的值并不会影响实际参数的值。在 Python 中,整型、浮点型、布尔型等都是不可变类型,传递时采用值传递的方式。

下面是一个简单的示例,帮助你理解 Python 中的值传递方式:

def func(a):
    a = 2
    print('函数内:a =', a)

x = 1
func(x)
print('函数外:x =', x)

上述代码中,我们定义了一个函数 func(a),并传递了 x 作为实际参数。在函数内部,我们将 a 的值修改为 2,并打印出了函数内部的值。在函数外部,我们再次打印 x 的值。你将得到如下输出:

函数内:a = 2
函数外:x = 1

由此可见,函数内部修改形式参数 a 的值,并不会影响实际参数 x 的值。这就是 Python 的值传递方式。

引用传递

引用传递是指在调用函数时,将实际参数的引用(也就是地址)传递给形式参数,在函数内部修改形式参数的值,也会影响实际参数的值。在 Python 中,列表、字典等可变类型采用引用传递的方式。

下面是一个示例,帮助你理解 Python 中的引用传递方式:

def func(a):
    a.append(2)
    print('函数内:a =', a)

x = [1]
func(x)
print('函数外:x =', x)

上述代码中,我们定义了一个函数 func(a),并传递了 x 作为实际参数。在函数内部,我们向 a 中添加了元素 2,并打印出了函数内部的值。在函数外部,我们再次打印 x 的值。你将得到如下输出:

函数内:a = [1, 2]
函数外:x = [1, 2]

由此可见,函数内部修改形式参数 a 中的值,同时也改变了实际参数 x 的值。

总结

在 Python 中,函数传递参数有两种方式,即值传递和引用传递。简单的说,不可变类型采用值传递,可变类型采用引用传递。

在 Python 中,引用传递(也就是传递对象的引用,而不是对象的值)是最常见的方式。对于不熟悉的 Python 程序员来说,理解这个概念是至关重要的。

以上就是 Python 引用传递和值传递的详细攻略。

示例

示例一

# 定义一个函数,传递一个字符串
def text(name):
    name = "hello " + name
    print("函数内 name 的值为:", name)

# 调用函数,传递一个字符串参数
my_name = "Tom"
text(my_name)
print("函数外 my_name 的值为:", my_name)

运行上述代码,将会输出:

函数内 name 的值为: hello Tom
函数外 my_name 的值为: Tom

由此可见,函数内部修改形式参数 name 的值,并不会影响实际参数 my_name 的值。

示例二

# 定义一个函数,传递一个列表
def add(item_list):
    item_list.append("apple")
    print("函数内 item_list 的值为:", item_list)

# 调用函数,传递一个列表参数
my_list = ["orange", "banana"]
add(my_list)
print("函数外 my_list 的值为:", my_list)

运行上述代码,将会输出:

函数内 item_list 的值为: ['orange', 'banana', 'apple']
函数外 my_list 的值为: ['orange', 'banana', 'apple']

由此可见,函数内部修改形式参数 item_list 中的值,同时也改变了实际参数 my_list 的值。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python 引用传递和值传递详解(实参,形参) - Python技术站

(0)
上一篇 2023年6月5日
下一篇 2023年6月5日

相关文章

  • 详解Python爬取并下载《电影天堂》3千多部电影

    详解Python爬取并下载《电影天堂》3千多部电影 0. 简介 本文主要介绍如何使用Python来爬取并下载电影天堂网站上的电影资源,包括如何从首页获取分类信息和对应的电影列表,如何从电影列表页获取详细的电影信息和下载链接,并使用迅雷进行自动下载。 1. 准备工作 在进行爬取之前,需要安装一些必要的Python库和工具: BeautifulSoup4: 用于…

    python 2023年5月14日
    00
  • python traceback捕获并打印异常的方法

    Python中的Traceback是调试程序时非常重要的工具,通过Traceback能够找到代码中的错误并进行处理。可以通过捕获异常并进行打印,详细的讲解如下: 捕获并打印异常的方法 要捕获异常并进行打印,可以使用try和except语句块。当代码运行出现异常时,异常会被捕获到except语句块中进行处理。可以在except语句块中添加打印语句来打印异常信息…

    python 2023年5月13日
    00
  • python重写方法和重写特殊构造方法

    Python重写方法和重写特殊构造方法 在Python中,我们可以通过重写方法和特殊构造方法来改变类的行为。本文将详细介绍如何重写方法和特殊构造方法,并提供两个示例说明。 重写方法 重写方法是指在子类中重新定义父类中已有的方法。这样做可以改变方法的行为,使其适应子类的需求。在Python中,我们可以通过在子类中定义与父类同名的方法来重写方法。 下面是一个示例…

    python 2023年5月13日
    00
  • 详解python中的Turtle函数库

    详解Python中的Turtle函数库 Python的Turtle函数库提供了一个绘制图形的工具,可以让用户轻松地绘制线条、图形等各种图像。本攻略将详细介绍Turtle库的使用方法。 什么是Turtle函数库 Turtle是一个Python函数库,提供了一个绘制图形的工具。用户可以在程序中调用Turtle的各种函数,通过移动小海龟绘制各种线条和图形。 安装T…

    python 2023年6月5日
    00
  • python下os模块强大的重命名方法renames详解

    Python下os模块强大的重命名方法renames详解 在Python的os模块中,有一个强大的重命名方法renames,本文将详细讲解该方法的使用。 什么是renames方法 renames方法是os模块中的一个方法,用于递归地重命名路径名,将给定的路径名重命名为新的路径名。重命名可跨越文件系统,也就是说可以将一个路径名从一个磁盘上的文件夹移动到另一个磁…

    python 2023年6月2日
    00
  • spyder快捷键与python符号化输出方式

    下面是关于 ” Spyder快捷键与Python符号化输出方式 ” 的完整攻略: 一、Spyder快捷键 Spyder是一款非常流行的Python IDE,支持许多快捷键。以下是一些常用的快捷键: Ctrl+Enter:执行当前选定的代码或当前光标所在的行。 F5:运行整个脚本。 Ctrl+E:打开编辑器,进行代码编写。 Ctrl+Shift+N:新建一个P…

    python 2023年6月5日
    00
  • Python学习之文件的创建与写入详解

    Python学习之文件的创建与写入详解 在Python中,文件是信息存储的一种重要方式。Python中的文件操作非常简单,可以轻松地创建、读取和修改文件。本文介绍如何在Python中创建和写入文件。 文件的创建 要在Python中创建一个新文件,可以使用内置的open()函数。 open()函数的语法如下: file = open(filename, mod…

    python 2023年6月2日
    00
  • python 获取list 长度

    在Python中,可以使用内置函数len()来获取列表的长度。len()函数返回列表中元素的个数,例如: my_list = [1, 2, 3, 4, 5] length = len(my_list) # 获取列表的长度 print(length) # 输出列表的长度 上述代码创建了一个包含5个元素的列表,并使用len()函数获取了该列表的长度。 除了使用l…

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