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执行shell获取硬件参数写入mysql的方法
Dec 29 Python
Python 装饰器使用详解
Jul 29 Python
Python中的is和==比较两个对象的两种方法
Sep 06 Python
解决出现Incorrect integer value: '' for column 'id' at row 1的问题
Oct 29 Python
python 正确保留多位小数的实例
Jul 16 Python
python提取包含关键字的整行数据方法
Dec 11 Python
图解python全局变量与局部变量相关知识
Nov 02 Python
浅谈Python3实现两个矩形的交并比(IoU)
Jan 18 Python
Centos7下源码安装Python3 及shell 脚本自动安装Python3的教程
Mar 07 Python
Django import export实现数据库导入导出方式
Apr 03 Python
浅析Python 条件控制语句
Jul 15 Python
Python用摘要算法生成token及检验token的示例代码
Dec 01 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学习之流程控制实现代码
2011/06/09 PHP
简单谈谈php浮点数精确运算
2016/03/10 PHP
php高清晰度无损图片压缩功能的实现代码
2018/12/09 PHP
一些有关检查数据的JS代码
2006/09/07 Javascript
ie和firefox不兼容的解决方法集合
2009/04/28 Javascript
利用onresize使得div可以随着屏幕大小而自适应的代码
2010/01/15 Javascript
js 浏览器事件介绍
2012/03/30 Javascript
如何实现修改密码时密码框显示保存到cookie的密码
2013/12/10 Javascript
Json实现异步请求提交评论无需跳转其他页面
2014/10/11 Javascript
node.js中的querystring.unescape方法使用说明
2014/12/10 Javascript
js+CSS实现弹出居中背景半透明div层的方法
2015/02/26 Javascript
jquery实现标签支持图文排列带上下箭头按钮的选项卡
2015/03/14 Javascript
JS组件Bootstrap实现弹出框效果代码
2016/04/26 Javascript
基于jquery实现即时检查格式是否正确的表单
2016/05/06 Javascript
JQuery控制DIV的选取实现方法
2016/09/18 Javascript
Ajax的概述与实现过程
2016/11/18 Javascript
详解vue-Resource(与后端数据交互)
2017/01/16 Javascript
Vue.js展示AJAX数据简单示例讲解
2017/03/29 Javascript
js实现一个猜数字游戏
2017/03/31 Javascript
JS使用H5实现图片预览功能
2019/09/30 Javascript
在Linux系统上通过uWSGI配置Nginx+Python环境的教程
2015/12/25 Python
Windows 7下Python Web环境搭建图文教程
2018/03/20 Python
Python的numpy库中将矩阵转换为列表等函数的方法
2018/04/04 Python
selenium设置proxy、headers的方法(phantomjs、Chrome、Firefox)
2018/11/29 Python
python 引用传递和值传递详解(实参,形参)
2020/06/05 Python
css3弹性盒模型(Flexbox)详细介绍
2014/10/08 HTML / CSS
用HTML5制作视频拼图的教程
2015/05/13 HTML / CSS
英国文胸专家:AmpleBosom.com
2018/02/06 全球购物
Bally澳大利亚官网:瑞士奢侈品牌
2018/11/01 全球购物
作为网站管理者应当如何防范XSS
2014/08/16 面试题
党员个人思想汇报
2013/12/28 职场文书
竞选生活委员演讲稿
2014/04/28 职场文书
2014年单位法制宣传日活动总结
2014/11/01 职场文书
校本培训个人总结
2015/02/28 职场文书
南京南京观后感
2015/06/02 职场文书
使用Html+Css实现简易导航栏功能(导航栏遇到鼠标切换背景颜色)
2021/04/07 HTML / CSS