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 相关文章推荐
用ReactJS和Python的Flask框架编写留言板的代码示例
Dec 19 Python
面向初学者的Python编辑器Mu
Oct 08 Python
对web.py设置favicon.ico的方法详解
Dec 04 Python
django之状态保持-使用redis存储session的例子
Jul 28 Python
详解python中docx库的安装过程
Nov 08 Python
pycharm通过ssh连接远程服务器教程
Feb 12 Python
django中的数据库迁移的实现
Mar 16 Python
解决windows上安装tensorflow时报错,“DLL load failed: 找不到指定的模块”的问题
May 20 Python
matplotlib 三维图表绘制方法简介
Sep 20 Python
Python Selenium异常处理的实例分析
Feb 28 Python
解决hive中导入text文件遇到的坑
Apr 07 Python
python实现进度条的多种实现
Apr 29 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 Xdebug的安装与使用详解
2013/06/20 PHP
php教程之魔术方法的使用示例(php魔术函数)
2014/02/12 PHP
Yii核心组件AssetManager原理分析
2014/12/02 PHP
[原创]图片分页查看
2006/08/28 Javascript
Javascript模块模式分析
2008/05/16 Javascript
JS对象转换为Jquery对象示例
2014/01/26 Javascript
JavaScript加入收藏夹功能(兼容IE、firefox、chrome)
2014/05/05 Javascript
使用jQuery的attr方法来修改onclick值
2014/07/07 Javascript
JavaScript通过join函数连接数组里所有元素的方法
2015/03/20 Javascript
Javascript监视变量变化的方法
2015/06/09 Javascript
ES6(ECMAScript 6)新特性之模板字符串用法分析
2017/04/01 Javascript
微信小程序表单验证错误提示效果
2017/05/19 Javascript
使用vue实现简单键盘的示例(支持移动端和pc端)
2017/12/25 Javascript
vue3.0 CLI - 3.2 路由的初级使用教程
2018/09/20 Javascript
js的对象与函数详解
2019/01/21 Javascript
Vue中UI组件库之Vuex与虚拟服务器初识
2019/05/07 Javascript
layui使用label标签的方法
2019/09/14 Javascript
vue-quill-editor插入图片路径太长问题解决方法
2021/01/08 Vue.js
Python通过matplotlib绘制动画简单实例
2017/12/13 Python
Python随机生成均匀分布在三角形内或者任意多边形内的点
2017/12/14 Python
Python爬虫设置代理IP的方法(爬虫技巧)
2018/03/04 Python
python 实现在txt指定行追加文本的方法
2018/04/29 Python
详解Ubuntu16.04安装Python3.7及其pip3并切换为默认版本
2019/02/25 Python
python多线程下信号处理程序示例
2019/05/31 Python
Python类型转换的魔术方法详解
2020/12/23 Python
Vision Directa智利眼镜网:框架眼镜、隐形眼镜和名牌太阳眼镜
2016/11/23 全球购物
SEPHORA丝芙兰捷克官网:购买香水、化妆品和护肤品
2018/11/26 全球购物
男女钓鱼靴和甲板鞋:XTRATUF
2021/01/09 全球购物
linux面试题参考答案(5)
2016/11/05 面试题
管理岗位竞聘演讲稿
2014/08/18 职场文书
成品仓管员岗位职责
2015/04/01 职场文书
未中标通知书
2015/04/17 职场文书
海上钢琴师观后感
2015/06/03 职场文书
MySQL表字段时间设置默认值
2021/05/13 MySQL
Win11更新失败并提示0xc1900101
2022/04/19 数码科技
php解析非标准json、非规范json的方式实例
2022/05/10 PHP