Python函数参数类型及排序原理总结


Posted in Python onDecember 19, 2019

这篇文章主要介绍了Python函数参数类型及排序原理总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

Python中函数的参数问题有点复杂,主要是因为参数类型问题导致的情况比较多,下面来分析一下。

参数类型:缺省参数,关键字参数,不定长位置参数,不定长关键字参数。

其实总共可以分为 位置参数和关键字参数,因为位置参数被放在list里面,关键字参数放在dict里面,Python在解读的时候首先处理list,没有遇到关键字就append到list里面,遇到关键字了,就开始做dict直到结束,所以,位置参数必须放在关键字参数前面。

这里总结出三个模型:

1:不存在缺省函数时:

def test(a,*args,c,d=3,**kwargs):
   print(a)
   print(args)
   print(c)
   print(d)
   print(kwargs)
 
 test(1,2,3,4,c=1,d=4,e=11,f=22)

运行结果:

1
(2, 3, 4)
1
4
{'e': 11, 'f': 22}

2:存在缺省参数,参数取默认值,(缺省参数放在*args后面)

def test(a,*args,b=1,c,d=3,**kwargs):
  print(a)
  print(args)
  print(b)
  print(c)
  print(d)
  print(kwargs)

test(1,2,3,4,c=1,d=4,e=11,f=22,h=66)

运行结果:

(2, 3, 4)
1
{'e': 11, 'f': 22, 'h': 66}

3:存在缺省参数,参数不取默认值,(缺省参数放在*args前面)

def test(a,b=1,*args,c,d=3,**kwargs):
  print(a)
  print(b)
  print(args)
  print(c)
  print(d)
  print(kwargs)

test(1,2,3,4,c=1,d=4,e=11,f=22,h=66)

运行结果:

1
2
(3, 4)
1
4
{'f': 22, 'e': 11, 'h': 66}

总结:

从上面也看出来了,其实基本顺序就是

位置参数--->关键字参数,然后就是缺省参数在 *args前后的问题了。
还有一点,前面已经说过,关键字参数被保存为字典类型,也就是无序的,但是 **kwargs 需要放在最后!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python与Redis的连接教程
Apr 22 Python
Python的Bottle框架中返回静态文件和JSON对象的方法
Apr 30 Python
详解Python的Django框架中的通用视图
May 04 Python
Python中使用ElementTree解析XML示例
Jun 02 Python
用Python的Flask框架结合MySQL写一个内存监控程序
Nov 07 Python
你真的了解Python的random模块吗?
Dec 12 Python
Python如何爬取实时变化的WebSocket数据的方法
Mar 09 Python
Python 操作 ElasticSearch的完整代码
Aug 04 Python
深入学习python多线程与GIL
Aug 26 Python
在Pytorch中计算自己模型的FLOPs方式
Dec 30 Python
将 Ubuntu 16 和 18 上的 python 升级到最新 python3.8 的方法教程
Mar 11 Python
C3 线性化算法与 MRO之Python中的多继承
Oct 05 Python
python中with语句结合上下文管理器操作详解
Dec 19 #Python
Django中密码的加密、验密、解密操作
Dec 19 #Python
利用OpenCV和Python实现查找图片差异
Dec 19 #Python
Python文本处理简单易懂方法解析
Dec 19 #Python
python类中super() 的使用解析
Dec 19 #Python
在python中计算ssim的方法(与Matlab结果一致)
Dec 19 #Python
用openCV和Python 实现图片对比,并标识出不同点的方式
Dec 19 #Python
You might like
php若干单维数组遍历方法的比较
2011/09/20 PHP
PHP删除非空目录的函数代码小结
2013/02/28 PHP
php和C#的yield迭代器实现方法对比分析
2019/07/17 PHP
PHP 对象继承原理与简单用法示例
2020/04/21 PHP
用函数式编程技术编写优美的 JavaScript
2006/11/25 Javascript
Prototype RegExp对象 学习
2009/07/19 Javascript
javascript数字数组去重复项的实现代码
2010/12/30 Javascript
jQuery消息提示框插件Tipso
2015/05/04 Javascript
js实现商城星星评分的效果
2015/12/29 Javascript
javascript事件委托的用法及其好处简析
2016/04/04 Javascript
jfinal与bootstrap的登出实战详解
2017/11/27 Javascript
vue指令之表单控件绑定v-model v-model与v-bind结合使用
2019/04/17 Javascript
解决layui页面按钮点击无反应,也不报错的问题
2019/09/29 Javascript
jquery实现直播视频弹幕效果
2020/02/25 jQuery
Selenium执行Javascript脚本参数及返回值过程详解
2020/04/01 Javascript
[04:30]显微镜下的DOTA2第五期——拉比克
2013/09/26 DOTA
Python性能优化技巧
2015/03/09 Python
Python编写简单的HTML页面合并脚本
2016/07/11 Python
Python多进程multiprocessing用法实例分析
2017/08/18 Python
Python通过matplotlib绘制动画简单实例
2017/12/13 Python
python操作xlsx文件的包openpyxl实例
2018/05/03 Python
深入浅析python 中的匿名函数
2018/05/21 Python
python_opencv用线段画封闭矩形的实例
2018/12/05 Python
对python pandas读取剪贴板内容的方法详解
2019/01/24 Python
django自带的权限管理Permission用法说明
2020/05/13 Python
莱德杯高尔夫欧洲官方商店:Ryder Cup Shop
2019/08/14 全球购物
香港家用健身器材、运动器材及健康美容仪器专门店:FitBoxx
2019/12/05 全球购物
党员的自我评价范文
2014/01/02 职场文书
中班开学寄语
2014/04/04 职场文书
服务之星事迹材料
2014/05/03 职场文书
机械工程及其自动化专业求职信
2014/08/08 职场文书
2014年银行年终工作总结
2014/12/19 职场文书
护士节慰问信
2015/02/15 职场文书
反邪教教育心得体会
2016/01/15 职场文书
MySQL入门命令之函数-单行函数-流程控制函数
2021/04/05 MySQL
SpringBoot集成Druid连接池连接MySQL8.0.11
2021/07/02 Java/Android