文章目录

  • 一、传递实参
    • 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的传递实参:位置实参、关键字实参、默认值、等效的函数调用、避免实参错误相关推荐

  1. python函数默认参数位置_二十二、Python函数参数类型(位置、关键字、默认、不定长参数)...

    调用函数时可使用的参数类型 在调用Python函数时可使用的参数类型主要有以下几种: 必要参数(位置参数) 关键字参数 默认参数 不定长参数 必要参数(位置参数) 在Python中, 必要参数必须以正 ...

  2. python调用函数传参时、有默认值的在中间 报错了_python的大坑:使用空列表作为默认参数,让我怀疑遇到了灵异代码...

    在python中,不要使用列表或者其他可变类型的数据容器作为默认参数.否则你很可能会遇到奇奇怪怪的问题. 如果你在调用某一个函数时,传了同样的参数,手动执行,每次结果都正确.但是用循环遍历重复多次执行 ...

  3. python中的def函数括号里的默认值_Python中的默认参数值

    Python对默认参数值的处理方法是少有的几个易使大多数新手Python程序员犯错的地方之一.(通常只犯一次) 导致困惑的地方是当你使用"可变"对象作为(参数的)默认值时的(程序) ...

  4. python xgboost参数_Python中的XGBoost XGBClassifier默认值

    这不是在xgboost中设置参数的方式.您可以将参数网格传递到训练函数中,例如xgboost的train或sklearn的GridSearchCV,也可以使用XGBClassifier的set_par ...

  5. python函数调用位置_python函数定义,调用,传参,位置参数及关键字参数,返回值

    使用函数是真正开始编程的第一步,函数y=f(x)我们并不陌生,对x进行一顿操作得到一个值y.给不同的x,进行相同的操作,得到相应的y值. 程序层面函数是执行特定任务的一段代码,将一段代码定义成函数并为 ...

  6. pythonnamedtuple定义类型_python - namedtuple和可选关键字参数的默认值

    python - namedtuple和可选关键字参数的默认值 我正在尝试将一个冗长的空洞"数据"类转换为一个命名元组. 我的班级目前看起来像这样: class Node(obje ...

  7. Python input输入超时选择默认值自动跳过

    Python input输入超时选择默认值自动跳过 Python input 等待键盘输入,超时选择默认值,释放input,之后重新进入等待键盘输入状态,直到用户输入可用数据. 一.调用 func_t ...

  8. python中怎么设置默认值_在Python中设置应该是列表的参数的默认值的最佳实践?...

    我有一个将列表作为参数的python函数.如果我将参数的默认值设置为如下空列表: def func(items=[]): print items 皮林特会告诉我"危险的默认值[]作为参数&q ...

  9. Python中如何设置函数的默认值

    1 问题描述 如何在python中获得一个设置了指定参数默认值的函数呢? 2 获得指定参数默认值的函数 使用functools.partial来实现:

最新文章

  1. 简明python教程 --C++程序员的视角(九):函数式编程、特殊类方法、测试及其他...
  2. 服务器部署基础知识_我在生产部署期间学到的知识
  3. 如何写好一份渗透测试报告
  4. VTK:vtkBillboardTextActor3D用法实战
  5. php的异常详解,php5异常处理详解_php
  6. 【Boost】boost库asio详解8——TCP的简单例子1
  7. ASP.NET MVC过滤器
  8. 【数论】【杜教筛】选数(P3172)
  9. 7-102 单词首字母大写 (15 分)
  10. (2)JavaScript书写语法
  11. android弹窗设计,想印:UI设计中弹窗设计的五条基本原则
  12. 智能制造的灾备问题如何解决? | 凌云时刻
  13. 一键调整PCB丝印,超级好用
  14. 关于集成网卡怎么设置pxe网卡启动
  15. 深度学习硬件环境配置
  16. 设置柱状图每根柱子的颜色
  17. 【k8s】重启kubelet、查看所有服务
  18. 自定义圆环形进度条实现
  19. AVL树的理解及自写AVL树
  20. 骑行318、 2016.7.30

热门文章

  1. 实现一个联系客服对话框的前端部分
  2. PPT后缀,要一起来认一认吗?
  3. zzulioj新生周赛(6) 2733: 键盘霸主hrs
  4. 【MATLAB】基于曼宁公式求解复式断面水位-流量关系曲线
  5. 奇文!程序员风格的修真小说,你绝对想不到
  6. VB.net参数化界面调用ANSYS求解的详细步骤及错误提示的解决办法
  7. Arduino(3) Mega2560和外部设备SPI通信
  8. 当人工智能遇上计算社会科学……
  9. 74HC04(反相器)和74HC14(反相器、施密特触发器)的具体区别详解
  10. 习题6-2 使用函数求特殊a串数列和 (20分)