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实现把utf-8格式的文件转换成gbk格式的文件
Jan 22 Python
初步解析Python下的多进程编程
Apr 28 Python
python实现简单爬虫功能的示例
Oct 24 Python
pandas.dataframe按行索引表达式选取方法
Oct 30 Python
Python实现钉钉发送报警消息的方法
Feb 20 Python
Python常用模块之requests模块用法分析
May 15 Python
python实现按首字母分类查找功能
Oct 31 Python
如何理解python中数字列表
May 29 Python
详解python变量与数据类型
Aug 25 Python
python 两种方法删除空文件夹
Sep 29 Python
opencv实现图像几何变换
Mar 24 Python
Python中OpenCV实现简单车牌字符切割
Jun 11 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
封装一个PDO数据库操作类代码
2009/09/09 PHP
8个必备的PHP功能实例代码
2013/10/27 PHP
php使用GD库创建图片缩略图的方法
2015/06/10 PHP
脚本吧 - 幻宇工作室用到js,超强推荐share.js
2006/12/23 Javascript
javascript 实现父窗口引用弹出窗口的值的脚本
2007/08/07 Javascript
常用Extjs工具:Extjs.util.Format使用方法
2012/03/22 Javascript
给jQuery方法添加回调函数一款插件的应用
2013/01/21 Javascript
js解析与序列化json数据(一)json.stringify()的基本用法
2013/02/01 Javascript
node.js中的fs.rename方法使用说明
2014/12/16 Javascript
jquery常用函数与方法汇总
2015/09/01 Javascript
JavaScritp添加url参数并将参数加入到url中及更改url参数的方法
2015/10/26 Javascript
学习JavaScript设计模式(策略模式)
2015/11/26 Javascript
jQuery使用$.ajax提交表单完整实例
2015/12/11 Javascript
jQuery进行组件开发完整实例
2015/12/15 Javascript
Bootstrap页面布局基础知识全面解析
2016/06/13 Javascript
关于jquery form表单序列化的注意事项详解
2017/08/01 jQuery
React Native中NavigatorIOS组件的简单使用详解
2018/01/27 Javascript
vue打包的时候自动将px转成rem的操作方法
2018/06/20 Javascript
微信小程序实现漂亮的弹窗效果
2020/05/26 Javascript
JavaScript时间日期操作实例小结【5个示例】
2018/12/22 Javascript
解决微信小程序云开发中获取数据库的内容为空的方法
2019/05/15 Javascript
vue中解决chrome浏览器自动播放音频和MP3语音打包到线上的实现方法
2020/10/09 Javascript
jQuery是用来干什么的 jquery其实就是一个js框架
2021/02/04 jQuery
Python中Django 后台自定义表单控件
2017/03/28 Python
浅谈使用Python变量时要避免的3个错误
2017/10/30 Python
matplotlib绘制动画代码示例
2018/01/02 Python
基于python历史天气采集的分析
2019/02/14 Python
pandas DataFrame的修改方法(值、列、索引)
2019/08/02 Python
将tensorflow模型打包成PB文件及PB文件读取方式
2020/01/23 Python
python3格式化字符串 f-string的高级用法(推荐)
2020/03/04 Python
使用python编写一个语音朗读闹钟功能的示例代码
2020/07/14 Python
计算机大学生的自我评价
2013/10/15 职场文书
初中班级口号
2014/06/09 职场文书
饭店服务员岗位职责
2015/02/09 职场文书
2015年社区教育工作总结
2015/05/13 职场文书
Python基于百度API识别并提取图片中文字
2021/06/27 Python