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高并发异步服务器核心库forkcore使用方法
Nov 26 Python
Python实现的百度站长自动URL提交小工具
Jun 27 Python
详解Python中的循环语句的用法
Apr 09 Python
最近Python有点火? 给你7个学习它的理由!
Jun 26 Python
使用Python操作excel文件的实例代码
Oct 15 Python
Django使用httpresponse返回用户头像实例代码
Jan 26 Python
centos 安装python3.6环境并配置虚拟环境的详细教程
Feb 22 Python
Python3实现统计单词表中每个字母出现频率的方法示例
Jan 28 Python
pytorch索引查找 index_select的例子
Aug 18 Python
python实现超市商品销售管理系统
Nov 22 Python
python实现简单坦克大战
Mar 27 Python
python TCP包注入方式
May 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按行读取、处理较大CSV文件的代码实例
2014/04/09 PHP
ThinkPHP之import方法实例详解
2014/06/20 PHP
PHP实现在对象之外访问其私有属性private及保护属性protected的方法
2017/11/20 PHP
PHP实现函数内修改外部变量值的方法示例
2018/12/28 PHP
在PHP中实现使用Guzzle执行POST和GET请求
2019/10/15 PHP
myEvent.js javascript跨浏览器事件框架
2011/10/24 Javascript
jQuery设置和获取HTML、文本和值示例
2014/07/08 Javascript
JQuery中DOM事件绑定用法详解
2015/06/13 Javascript
JS选中checkbox后获取table内一行TD所有数据的方法
2015/07/01 Javascript
jQuery插件EasyUI校验规则 validatebox验证框
2015/11/29 Javascript
有关jquery与DOM节点操作方法和属性记录
2016/04/15 Javascript
js css自定义分页效果
2017/02/24 Javascript
js实现本地时间同步功能
2017/08/26 Javascript
vue3.0 CLI - 2.5 - 了解组件的三维
2018/09/14 Javascript
小程序云开发实战小结
2018/10/25 Javascript
create-react-app中添加less支持的实现
2019/11/15 Javascript
jQuery操作元素的内容和样式完整实例分析
2020/01/10 jQuery
javascript局部自定义鼠标右键菜单
2020/12/08 Javascript
Python实现远程调用MetaSploit的方法
2014/08/22 Python
Python基于twisted实现简单的web服务器
2014/09/29 Python
python爬虫入门教程--快速理解HTTP协议(一)
2017/05/25 Python
Django原生sql也能使用Paginator分页的示例代码
2017/11/15 Python
Python matplotlib绘图可视化知识点整理(小结)
2018/03/16 Python
django创建简单的页面响应实例教程
2019/09/06 Python
python解释器pycharm安装及环境变量配置教程图文详解
2020/02/26 Python
使用Python获取当前工作目录和执行命令的位置
2020/03/09 Python
在keras下实现多个模型的融合方式
2020/05/23 Python
python中的django是做什么的
2020/07/31 Python
HTML5触摸事件(touchstart、touchmove和touchend)的实现
2020/05/08 HTML / CSS
真诚的求职信
2014/07/04 职场文书
教导主任个人总结
2015/03/03 职场文书
拾金不昧表扬稿大全
2015/05/05 职场文书
2015年中学总务处工作总结
2015/07/22 职场文书
2016大学军训心得体会
2016/01/11 职场文书
委托开发合同书(标准版)
2019/08/07 职场文书
Canvas绘制像素风图片的示例代码
2021/09/25 HTML / CSS