Python函数参数分类原理详解


Posted in Python onMay 28, 2020

一、参数的定义

1、函数的参数在哪里定义

在python中定义函数的时候,函数名后面的括号里就是用来定义参数的,如果有多个参数的话,那么参数之间直接用逗号,隔开

案列:

# 利用函数的参数,定义一个可以完成任意两个数相加的函数
def add_num(a,b):
  c = a + b
  print(c)

2、带参数的函数调用:

函数定义了参数,那么调用函数的时候就需要传入参数

add_num(11,22)
#运行结果
33

上面的案列中,我们定义函数的时候在函数名后面的括号里定义的参数叫做形参,

而我们调用函数的时候传入的参数叫做实参,形参是用来接收实参的。

Python函数参数分类原理详解

二、参数分类

上面我们说了形参和实参,那么形参和实参在在定义和调用的时候,根据形式不同有可以分为几类,

1、根据实参进行分类

实参:位置参数、关键字参数

1.1、位置参数(未命名参数)

def func(a,b,c):
  print(a)
  print(b)
  print(c)
  
add_num(11,22,33)
#运行结果
11
22
33

上述案列中,的函数的三个形参是按位置接收传入的实参,我们把这样的传参的形式叫做位置参数,

1.2、关键字参数(命名参数)

def func(a,b,c):
  print(a)
  print(b)
  print(c)
  
add_num(11,c=99,b=33)
#运行结果
11
33
99

调用函数函数的时候,实参通过参数名指定传给某个形参,这样的传参形式,我们把它叫做关键字参数

注意:传参的时候先写位置参数,再写命名参数

2、根据形参进行分类

形参可以分为三类:必备参数、默然参数、不定长参数

2.1、必备参数:

在调用函数的时候必须要传的参数

def add(a,b):
  c=a+b
  print(c)
add(11,22)

上面函数中的a,b就是必备参数,在调用的函数的时候必须要传,不然就会报错

2.2、默认参数(缺省参数):

调用函数的时候可以传可以不传,不传就用默认值

def func(a,b,c=99):
  print(a)
  print(b)
  print(c)
​
func(11,22,33)
print('-----------')
func(55,66)
​
#运行结果:
11
22
33
---------------
55
66
99

通过上述案列中我们可以发现,第一次调用的时候,我们传入了三个参数,c打印出来的是我们传入的值,第二次只传入了两个参数,这个时候c打印出来的是我们定义的时候给它设置的默认值

注意:带有默认值的参数一定要位于参数列表的最后面。

2.3、不定长参数*args和**kwargs

调用函数的时候可以传0个或者多个

2.3.1、*args:接收多传入的位置参数,以元祖的形式保存

def func(*args):print(args)
func(33,44,55,66,77)func(*(33,44,55,66,77))#运行结果 
(33,44,55,66,77)(33,44,55,66,77)

*args,args接收的是一个元祖;

调用的时候可以直接传入:func(33,44,55,66,77),

也可以可以先组装list或tuple,再通过*拆包传入:func(*(33,44,55,66,77));

2.3.2、**kwargs:接收多传入的关键字参数,以字典的形式保存

def func(**kwargs):
  print(kwargs)
func(e=33,h=44,f=55,d=66,c=77)
func(**{'e':33,'h':44,'d':66,'c':77})
#运行结果
{'e': 33, 'h': 44, 'f': 55, 'd': 66, 'c': 77}
{'e': 33, 'h': 44, 'f': 55, 'd': 66, 'c': 77}

**kwargs,kw接收的是一个字典;

关键字参数既可以直接传入:func(11,22,e=33,h=44,f=55,d=66,c=77),

也可以先组装dict,再通过**拆包传入:func(**{'e':33,'h':44,'d':66,'c':77})。

注意点:使用*args和**kwargs是Python的习惯写法,当然也可以用其他参数名,但最好使用习惯用法。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用python删除nginx缓存文件示例(python文件操作)
Mar 26 Python
pygame学习笔记(3):运动速率、时间、事件、文字
Apr 15 Python
在Python中处理字符串之isdigit()方法的使用
May 18 Python
简单总结Python中序列与字典的相同和不同之处
Jan 19 Python
Python实现获取磁盘剩余空间的2种方法
Jun 07 Python
Python寻找两个有序数组的中位数实例详解
Dec 05 Python
对Python 多线程统计所有csv文件的行数方法详解
Feb 12 Python
Python 继承,重写,super()调用父类方法操作示例
Sep 29 Python
pandas 中对特征进行硬编码和onehot编码的实现
Dec 20 Python
推荐8款常用的Python GUI图形界面开发框架
Feb 23 Python
Spring http服务远程调用实现过程解析
Jun 11 Python
15款Python编辑器的优缺点,别再问我“选什么编辑器”啦
Oct 19 Python
pygame用blit()实现动画效果的示例代码
May 28 #Python
PyCharm中如何直接使用Anaconda已安装的库
May 28 #Python
Python内置异常类型全面汇总
May 28 #Python
python不到50行代码完成了多张excel合并的实现示例
May 28 #Python
python使用openpyxl操作excel的方法步骤
May 28 #Python
基于python实现破解滑动验证码过程解析
May 28 #Python
PythonPC客户端自动化实现原理(pywinauto)
May 28 #Python
You might like
颠覆常识!无色透明的咖啡诞生了(中日双语)
2021/03/03 咖啡文化
ThinkPHP3.1新特性之对分组支持的改进与完善概述
2014/06/19 PHP
PHP PDOStatement::bindValue讲解
2019/01/30 PHP
PHP copy函数使用案例代码解析
2020/09/01 PHP
JavaScript 利用Cookie记录用户登录信息
2009/12/08 Javascript
IE6下通过a标签点击切换图片的问题
2010/11/14 Javascript
document.all的一个比较完整的总结及案例
2013/01/31 Javascript
jQuery插件实现大图全屏图片相册
2015/03/14 Javascript
javascript模拟C#格式化字符串
2015/08/26 Javascript
JCrop+ajaxUpload 图像切割上传的实例代码
2016/07/20 Javascript
实现React单页应用的方法详解
2016/08/02 Javascript
bootstrap日历插件datetimepicker使用方法
2016/12/14 Javascript
原生js实现网页顶部自动下拉/收缩广告效果
2017/01/20 Javascript
javaScript封装的各种写法
2017/08/14 Javascript
vue如何在自定义组件中使用v-model
2018/05/14 Javascript
JavaScript 2018 中即将迎来的新功能
2018/09/21 Javascript
vue中echarts图表大小适应窗口大小且不需要刷新案例
2020/07/19 Javascript
jquery实现图片放大镜效果
2020/12/23 jQuery
[42:48]完美世界DOTA2联赛PWL S3 Magma vs INK ICE 第二场 12.11
2020/12/16 DOTA
Python中Random和Math模块学习笔记
2015/05/18 Python
更改Ubuntu默认python版本的两种方法python-> Anaconda
2016/12/18 Python
Python中标准模块importlib详解
2017/04/16 Python
Python paramiko模块的使用示例
2018/04/11 Python
Python函数装饰器实现方法详解
2018/12/22 Python
Python 支持向量机分类器的实现
2020/01/15 Python
纯CSS3实现8组超炫酷鼠标滑过图片动画
2016/03/16 HTML / CSS
css3 实现滚动条美化效果的实例代码
2021/01/06 HTML / CSS
html5文本内容_动力节点Java学院整理
2017/07/11 HTML / CSS
Lee牛仔裤澳大利亚官网:美国著名牛仔裤品牌
2017/09/02 全球购物
十佳班主任事迹材料
2014/01/18 职场文书
新郎婚宴答谢词
2014/01/19 职场文书
开办大学饮食联盟创业计划书
2014/01/29 职场文书
2015年先进个人自荐书
2015/03/24 职场文书
python读取mnist数据集方法案例详解
2021/09/04 Python
MySQL数据库优化之通过索引解决SQL性能问题
2022/04/10 MySQL
Pytorch中expand()的使用(扩展某个维度)
2022/07/15 Python