ad

《Python学习笔记 从入门到实战》_更了解Python的途径之一_6.2 函数的参数

网友投稿 57 2023-11-07

【摘要】 本书摘自《Python学习笔记 从入门到实战》一书中第6章,第2节,由张学建编著。

6.2 函数的参数

6.2.1 形参和实参

在前面的实例6-2中,参数“T” 是形参,而在实例6-2最后4行代码中,小括号中的 “(1,2,3,4)”和“[3,4,5,6]”都是实参。在 Python 程序中,形参表示函数完成其工作所需的一 项信息。而实参是调用函数时传递给函数的信息。初学者有时候会形参、实参不分,因此如 果你看到有人将函数定义中的变量称为实参或将函数调用中的变量称为形参,不要大惊小怪。

在Python 程序中调用函数时,可以使用的正式实参类型有必需参数、关键字参数、默 认参数和不定长参数。在本书后面的内容中,将详细讲解这些参数的基本知识和用法。

6.2.2 必 需 参 数

《Python学习笔记 从入门到实战》_更了解Python的途径之一_6.2 函数的参数

在Python 程序中,必需参数也被称为位置实参,在使用时必须以正确的顺序传入函数。 并且调用函数时,必需参数的数量必须和声明时的一样。例如在下面的实例代码中,在调用 printme() 函数时必须传入一个参数,不然会出现语法错误。

6.2.3 关键字参数

在 Python 程序中,关键字参数和函数调用关系紧密。在调用函数时,通过使用关键字 参数可以确定传入的参数值。在使用关键字参数时,允许函数调用时参数的顺序与声明时 不一致,因为Python 解释器能够用参数名匹配参数值。例如在下面的实例中,在调用函数 printme()时使用了关键字参数。6.2.4 默认参数

当在 Python 程序中调用函数时,如果没有传递参数,则会使用默认参数(也被称为默 认值参数)。例如在下面的实例中,演示了如果没有传入参数 age 则使用默认值的过程。

实例6-6:打印两个好友的信息

源码路径:下载包\daima\6\6-6

6.2.5 不定长参数

在 Python 程序中,可能需要一个函数处理比当初声明时更多的参数,这些参数叫作不 定长参数。不定长参数也被称为可变参数,和前面介绍的参数类型不同,声明不定长参数时 不会命名,基本语法格式如下:

在上述格式中,加了星号“*”的变量名会存放所有未命名的变量参数。如果在函数调

用时没有指定参数,它就是一个空元组,开发者也可以不向函数传递未命名的变量。由此可 见,在自定义函数时,如果参数名前加上一个星号“*”,则表示该参数就是一个可变长参数。 在调用该函数时,如果依次序将所有的其他变量都赋予值之后,剩下的参数将会收集在一个 元组中,元组的名称就是前面带星号的参数名。

例如在下面的实例中,演示了使用不定长参数的过程。

6.2.6 按值传递参数和按引用传递参数

在 Python 程序中,函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过 程)在调用发生时进行通信的方法问题。基本的参数传递机制有两种,分别是按值传递和按 引用传递,具体说明如下所示。

(1)在值传递 (Pass-By-Value) 过程中,被调函数的形式参数作为被调函数的局部变 量来处理,即在堆栈中开辟了内存空间以存放由主调函数放进来的实参的值,从而成为了实 参的一个副本。值传递的特点是被调函数对形式参数的任何操作都是作为局部变量进行,不 会影响主调函数的实参变量的值。

(2)在引用传递 (Pass-By-Reference) 过程中,被调函数的形式参数虽然也作为局部变 量在堆栈中开辟了内存空间,但是这时存放的是由主调函数放进来的实参变量的地址。被调 函数对形参的任何操作都被处理成间接寻址,即通过堆栈中存放的地址访问主调函数中的实 参变量。正因为如此,被调函数对形参做的任何操作都影响了主调函数中的实参变量。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 [email protected] 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:《Python+3自动化软件发布系统》Django 2实战_了解Python的更好方法_3.2.3 将本地代码推送到 GitLab 中
下一篇:《Python+3自动化软件发布系统》Django 2实战_了解Python的更好方法_第一章 Python 基础
相关文章

 发表评论

暂时没有评论,来抢沙发吧~

×