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 相关文章推荐
仅用50行代码实现一个Python编写的计算器的教程
Apr 17 Python
Python实现动态加载模块、类、函数的方法分析
Jul 18 Python
浅谈Django学习migrate和makemigrations的差别
Jan 18 Python
windows环境下tensorflow安装过程详解
Mar 30 Python
Python利用Django如何写restful api接口详解
Jun 08 Python
PyQt5事件处理之定时在控件上显示信息的代码
Mar 25 Python
Python通过队列来实现进程间通信的示例
Oct 14 Python
快速解决pymongo操作mongodb的时区问题
Dec 05 Python
opencv python 对指针仪表读数识别的两种方式
Jan 14 Python
pycharm 使用tab跳出正在编辑的括号(){}{}等问题
Feb 26 Python
为了顺利买到演唱会的票用Python制作了自动抢票的脚本
Oct 16 Python
pytorch分类模型绘制混淆矩阵以及可视化详解
Apr 07 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/01 无线电
php模板之Phpbean的目录结构
2008/01/10 PHP
PHP_Cooikes不同页面无法传递的解决方法
2014/03/07 PHP
7个鲜为人知却非常实用的PHP函数
2015/07/01 PHP
禁止刷新,回退的JS
2006/11/25 Javascript
兼容多浏览器的iframe自适应高度(ie8 、谷歌浏览器4.0和 firefox3.5.3)
2009/11/04 Javascript
js正则表达exec与match的区别说明
2014/01/29 Javascript
qq悬浮代码(兼容各个浏览器)
2014/01/29 Javascript
node.js操作mongoDB数据库示例分享
2014/11/26 Javascript
浅析jquery unbind()方法移除元素绑定的事件
2016/05/24 Javascript
JavaScript职责链模式概述
2016/09/17 Javascript
浅谈js的ajax的异步和同步请求的问题
2016/10/07 Javascript
JavaScript常用正则验证函数实例小结【年龄,数字,Email,手机,URL,日期等】
2017/01/23 Javascript
深入理解ES6学习笔记之块级作用域绑定
2017/08/19 Javascript
在vue项目中,将juery设置为全局变量的方法
2018/09/25 Javascript
VSCode使用之Vue工程配置eslint
2019/04/30 Javascript
vue中keep-alive,include的缓存问题
2019/11/26 Javascript
JS实现分页导航效果
2020/02/19 Javascript
vuex入门最详细整理
2020/03/04 Javascript
vue制作toast组件npm包示例代码
2020/10/29 Javascript
[03:16]DOTA2完美大师赛主赛事首日集锦
2017/11/23 DOTA
[00:43]魔廷新尊——痛苦女王至宝捆绑包
2020/06/12 DOTA
[42:48]完美世界DOTA2联赛PWL S3 Magma vs INK ICE 第二场 12.11
2020/12/16 DOTA
Python编写的com组件发生R6034错误的原因与解决办法
2013/04/01 Python
python实现发送form-data数据的方法详解
2019/09/27 Python
Pytorch在NLP中的简单应用详解
2020/01/08 Python
Nixon手表英国官网:美国尼克松手表品牌
2020/02/10 全球购物
跟单文员的岗位职责
2013/11/14 职场文书
酒店副总岗位职责
2013/12/24 职场文书
公交公司毕业生求职信
2014/02/15 职场文书
办公室文员岗位职责范本
2014/06/12 职场文书
教师见习报告范文
2014/11/03 职场文书
公务员处分决定书
2015/06/25 职场文书
运动会通讯稿300字
2015/07/20 职场文书
python使用BeautifulSoup 解析HTML
2022/04/24 Python
Hive日期格式转换方法总结
2022/06/25 数据库