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 相关文章推荐
python3实现UDP协议的服务器和客户端
Jun 14 Python
Python中工作日类库Busines Holiday的介绍与使用
Jul 06 Python
Python 加密的实例详解
Oct 09 Python
python模块之paramiko实例代码
Jan 31 Python
使用Python进行QQ批量登录的实例代码
Jun 11 Python
python字符串切割:str.split()与re.split()的对比分析
Jul 16 Python
Python 使用 environs 库定义环境变量的方法
Feb 25 Python
如何基于线程池提升request模块效率
Apr 18 Python
django在开发中取消外键约束的实现
May 20 Python
Python字符串split及rsplit方法原理详解
Jun 29 Python
python如何实现DES加密
Sep 21 Python
使用pd.merge表连接出现多余行的问题解决
Jun 16 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
PHP中比较时间大小实例
2014/08/21 PHP
Laravel 实现密码重置功能
2018/02/23 PHP
在laravel中使用with实现动态添加where条件
2019/10/10 PHP
跨域表单提交状态的变相判断代码
2009/11/12 Javascript
IE、FF浏览器下修改标签透明度
2014/01/28 Javascript
jquery遍历checkbox介绍
2014/02/21 Javascript
jQuery中[attribute*=value]选择器用法实例
2014/12/31 Javascript
深入探讨JavaScript String对象
2015/03/09 Javascript
使用BootStrap实现用户登录界面UI
2016/08/10 Javascript
vue中各组件之间传递数据的方法示例
2017/07/27 Javascript
html中通过JS获取JSON数据并加载的方法
2017/11/30 Javascript
JavaScript实现学生在线做题计时器功能
2018/12/05 Javascript
JavaScript显式数据类型转换详解
2019/03/18 Javascript
详解如何理解vue的key属性
2019/04/14 Javascript
Layui 动态禁止select下拉的例子
2019/09/03 Javascript
基于脚手架创建Vue项目实现步骤详解
2020/08/03 Javascript
javascript实现倒计时提示框
2021/03/02 Javascript
Python列表生成器的循环技巧分享
2015/03/06 Python
python回调函数用法实例分析
2015/05/09 Python
Python文件操作之合并文本文件内容示例代码
2017/09/19 Python
浅谈Python处理PDF的方法
2017/11/10 Python
Python使用pickle模块存储数据报错解决示例代码
2018/01/26 Python
Python+Pandas 获取数据库并加入DataFrame的实例
2018/07/25 Python
python GUI库图形界面开发之PyQt5滑块条控件QSlider详细使用方法与实例
2020/02/28 Python
用ldap作为django后端用户登录验证的实现
2020/12/07 Python
Pycharm 解决自动格式化冲突的设置操作
2021/01/15 Python
欧铁通票官方在线销售网站:Eurail.com
2017/10/14 全球购物
德国购买门票网站:ADticket.de
2019/10/31 全球购物
俄罗斯品牌服装在线商店:VIPAVENUE
2020/08/10 全球购物
草莓网中国:StrawberryNet中国
2020/08/17 全球购物
连锁酒店店长职责范本
2014/02/13 职场文书
职业女性的职业规划
2014/03/04 职场文书
政府信息公开实施方案
2014/05/09 职场文书
公司任命书模板
2014/06/06 职场文书
迎国庆主题班会
2015/08/17 职场文书
python图片灰度化处理的几种方法
2021/06/23 Python