Python函数参数分类原理详解
作者:musen 发布时间:2022-02-26 17:05:57
一、参数的定义
1、函数的参数在哪里定义
在python中定义函数的时候,函数名后面的括号里就是用来定义参数的,如果有多个参数的话,那么参数之间直接用逗号,隔开
案列:
# 利用函数的参数,定义一个可以完成任意两个数相加的函数
def add_num(a,b):
c = a + b
print(c)
2、带参数的函数调用:
函数定义了参数,那么调用函数的时候就需要传入参数
add_num(11,22)
#运行结果
33
上面的案列中,我们定义函数的时候在函数名后面的括号里定义的参数叫做形参,
而我们调用函数的时候传入的参数叫做实参,形参是用来接收实参的。
二、参数分类
上面我们说了形参和实参,那么形参和实参在在定义和调用的时候,根据形式不同有可以分为几类,
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的习惯写法,当然也可以用其他参数名,但最好使用习惯用法。
来源:https://www.cnblogs.com/nmb-musen/p/10648149.html


猜你喜欢
- git cherry-pick可以选择某一个分支中的一个或几个commit(s)来进行操作。例如,假设我们有个稳定版本的分支,叫v2.0,另
- 简单介绍下:CSS 图片拼合 (CSS sprites) 可有效降低图片文件的 HTTP 连接请求数. 多个图片将以一定间距合并为一个大图片
- 思路改进原博主文章(Python GUI–Tkinter简单实现个性签名设计)的代码,原先的代码是基于Python2的,我这份代码基于Pyt
- 说明1、通过特征本身的方差来筛选特征。特征的方差越小,特征的变化越不明显。2、变化越不明显的特征对我们区分标签没有太大作用,因此应该消除这些
- 1.添加自定义机器人2.编写python代码请求钉钉机器人所给的webhook钉钉自定义机器人官方文档安全方式使用加签的方式:第一步,把ti
- 如下所示:import osimport timeimport subprocesssubprocess.Popen(r'cmd
- 使用python基于cartopy库绘制台风路径使用python 绘制西太平洋进入我国的台风路径,文件为.dat格式,内容如下所示:代码如下
- 本文实例讲述了Django框架静态文件使用/中间件/禁用ip功能。分享给大家供大家参考,具体如下:静态文件一、静态文件的使用静态文件:网页中
- php中-> 、=>、::、$this->四种符号在代码中很常见,使用很广泛。这篇文章主要介绍了php中-> 、=&
- 权重初始化对于训练神经网络至关重要,好的初始化权重可以有效的避免梯度消失等问题的发生。在pytorch的使用过程中有几种权重初始化的方法供大
- 索引的概念MySQL索引是一种用于加速数据库查询的数据结构,它类似于书籍的目录,能够快速指导我们找到需要的信息。MySQL索引可以根据一定的
- UTF-8匹配: 在javascript中,要判断字符串是中文是很简单的。比如: var str = "php编程";
- 下载,安装先检查系统中是否有mysql ,MariaDB,如有,先卸载rpm -qa | grep mysqlrpm -qa | grep
- Nocalhost是一种开发者工具,支持针对Kubernetes应用程序进行调试和部署。使用Nocalhost进行Python开发需要完成以
- 本文介绍了python opencv 直方图反向投影的方法,分享给大家,具体如下:目标: 直方图反向投影原理: 反向投影可以用来做图像分割,
- 先给大家说下什么是localstorage前几天在老项目中发现有对cookie的操作觉得很奇怪,咨询下来是要缓存一些信息,以避免在URL上面
- Microsoft? SQL Server? 2000 提供了两种主要机制来强制业务规则和数据完整性:约束和触发器。触发器是一种特殊类型的存
- 本文介绍了纯python进行矩阵的相乘运算的方法示例,分享给大家,具体如下:def matrixMultiply(A, B):
- 周末在家,儿子闹着要玩游戏,让玩吧,不利于健康,不让玩吧,扛不住他折腾,于是想,不如一起搞个小游戏玩玩!之前给他编过猜数字 和 掷骰子 游戏
- 在cssrain整理的一个 试题集 中有这么一道题:<SCRIPT LANGUAGE="JavaScript"&g