【笔记】python的传递实参:位置实参、关键字实参、默认值、等效的函数调用、避免实参错误
文章目录
- 一、传递实参
- 1.位置实参
- 2.关键字实参
- 3.默认值
- 4.等效的函数调用
- 5.避免实参错误
一、传递实参
函数定义中可能包含多个形参,因此函数调用中也可能包含多个实参。向函数传递实参的方式很多:可使用位置实参,这要求实参的顺序与形参的顺序相同;也可使用关键字实参,其中每个实参都由变量名和值组成;还可以使用列表和字典。
1.位置实参
调用函数时,python必须将函数调用中的每个实参都关联到函数定义中的一个形参。最简单的关联方式是基于实参的顺序。这种关联方式称为位置实参。
为了弄明白工作原理,我们来看一个例子
例:定义一个显示宠物信息的函数,这个函数指出一个宠物属于哪种动物以及它叫什么名字。
def describe_pet(animal_type,pet_name):"""显示宠物的信息"""print(f"\nI have a {animal_type}.")print(f"My {animal_type}'s name is {pet_name}")describe_pet('hamster','harry')
输出结果:
当我们使用位置实参的时候,需要注意两点:
1.我们可以根据需要多次调用函数
2.位置实参的顺序很重要
2.关键字实参
关键字实参是传递给函数的名称值对。因为直接在实参中将名称和值关联起来,所以向函数传递实参时不会混淆。关键字实参让我们无须考虑函数调用中的实参顺序,还清楚的指出了函数调用各个值的用途。
例:重新编写上例
def describe_pet(animal_type,pet_name):"""显示宠物的信息"""print(f"\nI have a {animal_type}.")print(f"My {animal_type}'s name is {pet_name}")describe_pet(animal_type='hamster',pet_name='harry')
describe_pet(pet_name='harry',animal_type='hamster')
输出结果:
关键字实参的顺序无关紧要,我们可以看到例中两种调用传参是等效的。
使用关键字实参时,务必准确指定函数定义中的形参名。
3.默认值
编写函数时,可给每个形参指定默认值。在调用函数中给形参提供了实参时,python将使用指定的实参值;否则,将使用形参的默认值。
给形参指定的默认值后,可在函数调用中省略相应的实参。
使用默认值可简化函数调用,还可以清楚的指出函数的典型用法。
例:当我们发现animal_type大多是小狗时,我们可以给形参animal_type的默认值设为dog
def describe_pet(pet_name,animal_type='dog'):"""显示宠物的信息"""print(f"\nI have a {animal_type}.")print(f"My {animal_type}'s name is {pet_name}")describe_pet(pet_name='harry')
输出结果:
**特别需要注意的是!!!**可以看到我的代码里面修改了形参animal_type和pet_name的位置,这是是因为牵扯到了位置实参的问题。
使用默认值时,必须先在形参列表中列出没有默认值的形参,在列出有默认值的实参。这让python依然能够正确地解读位置实参。
4.等效的函数调用
鉴于可混合使用位置实参、关键字实参、和默认值,通常有多种等效的函数调用方式。
例:
def describe_pet(pet_name,animal_type='dog'):"""显示宠物的信息"""print(f"\nI have a {animal_type}.")print(f"My {animal_type}'s name is {pet_name}")#调用函数
#一条名为Willie的小狗
describe_pet('willie')
describe_pet(pet_name='willie')#一只名为Harry的小仓鼠
describe_pet('harry','hamster')
describe_pet(pet_name='harry',animal_type='hamster')
describe_pet(animal_type='hamster',pet_name='harry')
输出结果:
其实我们使用哪种调用方式都无关紧要,只要函数调用能生成我们期望的输出就可。
5.避免实参错误
一般我们看到报错信息里面出现traceback,就是因为出现实参不匹配的错误。
【笔记】python的传递实参:位置实参、关键字实参、默认值、等效的函数调用、避免实参错误相关推荐
- python函数默认参数位置_二十二、Python函数参数类型(位置、关键字、默认、不定长参数)...
调用函数时可使用的参数类型 在调用Python函数时可使用的参数类型主要有以下几种: 必要参数(位置参数) 关键字参数 默认参数 不定长参数 必要参数(位置参数) 在Python中, 必要参数必须以正 ...
- python调用函数传参时、有默认值的在中间 报错了_python的大坑:使用空列表作为默认参数,让我怀疑遇到了灵异代码...
在python中,不要使用列表或者其他可变类型的数据容器作为默认参数.否则你很可能会遇到奇奇怪怪的问题. 如果你在调用某一个函数时,传了同样的参数,手动执行,每次结果都正确.但是用循环遍历重复多次执行 ...
- python中的def函数括号里的默认值_Python中的默认参数值
Python对默认参数值的处理方法是少有的几个易使大多数新手Python程序员犯错的地方之一.(通常只犯一次) 导致困惑的地方是当你使用"可变"对象作为(参数的)默认值时的(程序) ...
- python xgboost参数_Python中的XGBoost XGBClassifier默认值
这不是在xgboost中设置参数的方式.您可以将参数网格传递到训练函数中,例如xgboost的train或sklearn的GridSearchCV,也可以使用XGBClassifier的set_par ...
- python函数调用位置_python函数定义,调用,传参,位置参数及关键字参数,返回值
使用函数是真正开始编程的第一步,函数y=f(x)我们并不陌生,对x进行一顿操作得到一个值y.给不同的x,进行相同的操作,得到相应的y值. 程序层面函数是执行特定任务的一段代码,将一段代码定义成函数并为 ...
- pythonnamedtuple定义类型_python - namedtuple和可选关键字参数的默认值
python - namedtuple和可选关键字参数的默认值 我正在尝试将一个冗长的空洞"数据"类转换为一个命名元组. 我的班级目前看起来像这样: class Node(obje ...
- Python input输入超时选择默认值自动跳过
Python input输入超时选择默认值自动跳过 Python input 等待键盘输入,超时选择默认值,释放input,之后重新进入等待键盘输入状态,直到用户输入可用数据. 一.调用 func_t ...
- python中怎么设置默认值_在Python中设置应该是列表的参数的默认值的最佳实践?...
我有一个将列表作为参数的python函数.如果我将参数的默认值设置为如下空列表: def func(items=[]): print items 皮林特会告诉我"危险的默认值[]作为参数&q ...
- Python中如何设置函数的默认值
1 问题描述 如何在python中获得一个设置了指定参数默认值的函数呢? 2 获得指定参数默认值的函数 使用functools.partial来实现:
最新文章
- 简明python教程 --C++程序员的视角(九):函数式编程、特殊类方法、测试及其他...
- 服务器部署基础知识_我在生产部署期间学到的知识
- 如何写好一份渗透测试报告
- VTK:vtkBillboardTextActor3D用法实战
- php的异常详解,php5异常处理详解_php
- 【Boost】boost库asio详解8——TCP的简单例子1
- ASP.NET MVC过滤器
- 【数论】【杜教筛】选数(P3172)
- 7-102 单词首字母大写 (15 分)
- (2)JavaScript书写语法
- android弹窗设计,想印:UI设计中弹窗设计的五条基本原则
- 智能制造的灾备问题如何解决? | 凌云时刻
- 一键调整PCB丝印,超级好用
- 关于集成网卡怎么设置pxe网卡启动
- 深度学习硬件环境配置
- 设置柱状图每根柱子的颜色
- 【k8s】重启kubelet、查看所有服务
- 自定义圆环形进度条实现
- AVL树的理解及自写AVL树
- 骑行318、 2016.7.30