python函数的5种参数详解


Posted in Python onFebruary 24, 2017

(1)       位置参数,调用函数时按位置传入参数

(2)       默认参数,即在函数定义时就给出参数的值,设置默认参数时要注意两点,一是必选参数在前,默认参数在后。二是把变化小的参数放在后面可作为默认参数。具有默认参数的函数被调用时可以不传入默认参数,若需要改变默认参数的值则可以赋值的形式调用该函数。若不按顺序提供默认参数则需要把参数名写上(即以赋值的形式)。默认参数必须指向不变的参数(即不变对象,对象内部的数据一旦创建就不能改变,在多任务环境下同时读取对象不需要加锁)

(3)       可变参数,即传入参数的个数是可变的。由于参数的个数不确定我们可以把参数作为一个list或tuple传入,访问时可以使用for循环访问。如果直接利用可变参数,定义可变参数和定义list或tuple参数相比仅仅在参数前面加一个*号。在涵数内部参数接收到的是一个tuple,因此函数代码完全不变,但是,调用函数时可以传入任意个参数,包括0个参数。如果已经有一个list或tuple要调用一个可变参数有两种方法,一是分别取出各参数并传入。二是在其前面加上一个*号,把list或tuple的元素变成可变参数传进去。

(4)       关键字参数,可变参数允许你传入0个或任意个参数,这些参数在函数调用时自动组装成一个tuple。而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。如果传入的关键字参数为dict则可以将函数中的那个参数前面加两个**号。

(5)       命名关键字参数,用于限制关键字的名字。和关键字参数**kw不同,命名关键字参数需要一个特殊分隔符*,*后面的参数被视为命名关键字参数。如果函数定义中已经有了一个可变参数,后面跟着的命名参数就不需要一个特殊分隔符*号了。命名关键字参数必须传入参数名,这和位置参数不同。如果没有传入参数名,调用将报错。

注意:参数的定义顺序是:必选参数、默认参数(一定要用不可变对象)、可变参数、命名关键字参数、关键字参数  def f(a,b,c=0,*,d,**kw),对于任意函数都可以通过类似fun(*arg,**kw)的形式调用它,无论它的参数是如何定义的。

*arg是可变参数,arg接收的是tuple

**kw是关键字参数,kw接收的是dict

可变参数即可以直接传入:fun(1,2,3),又可以先组装list或tuple,再通过*arg传入:func(*(1,2,3));

关键字参数既可以直接传入:fun(a=1,b=2),又可以先组装dict,再通过**kw传入:function(**{‘a':1,'b':2})

Python 相关文章推荐
python根据出生日期获得年龄的方法
Mar 31 Python
基于python时间处理方法(详解)
Aug 14 Python
浅谈Python2获取中文文件名的编码问题
Jan 09 Python
python爬虫 使用真实浏览器打开网页的两种方法总结
Apr 21 Python
详解Pytorch 使用Pytorch拟合多项式(多项式回归)
May 24 Python
解决Python中list里的中文输出到html模板里的问题
Dec 17 Python
Python有参函数使用代码实例
Jan 06 Python
Python3实现打印任意宽度的菱形代码
Apr 12 Python
python 使用raw socket进行TCP SYN扫描实例
May 05 Python
Python中操作各种多媒体,视频、音频到图片的代码详解
Jun 04 Python
在python中list作函数形参,防止被实参修改的实现方法
Jun 05 Python
python开发入门——set的使用
Sep 03 Python
Python实现读取文件最后n行的方法
Feb 23 #Python
Python基础教程之tcp socket编程详解及简单实例
Feb 23 #Python
Python命令启动Web服务器实例详解
Feb 23 #Python
Python 基础教程之包和类的用法
Feb 23 #Python
python安装oracle扩展及数据库连接方法
Feb 21 #Python
python安装cx_Oracle模块常见问题与解决方法
Feb 21 #Python
Python实现字符串格式化的方法小结
Feb 20 #Python
You might like
php面向对象中static静态属性和静态方法的调用
2015/02/08 PHP
php使用类继承解决代码重复的问题
2015/02/11 PHP
jquery+php实现导出datatables插件数据到excel的方法
2015/07/06 PHP
JavaScript 学习技巧
2010/02/17 Javascript
javascript dom 基本操作小结
2010/04/11 Javascript
浅析return false的正确使用
2013/11/04 Javascript
实现checkbox全选、反选、取消JavaScript小脚本异常
2014/04/10 Javascript
js通过更改按钮的显示样式实现按钮的滑动效果
2014/04/23 Javascript
基于jQuery的判断iPad、iPhone、Android是横屏还是竖屏的代码
2014/05/11 Javascript
js显示当前日期时间和星期几
2015/10/22 Javascript
在线引用最新jquery文件的实现方法
2016/08/26 Javascript
JavaScript 链式结构序列化详解
2016/09/30 Javascript
前端框架学习总结之Angular、React与Vue的比较详解
2017/03/14 Javascript
Angular模板表单校验方法详解
2017/08/11 Javascript
Three.js中矩阵和向量的使用教程
2019/03/19 Javascript
JS通过ajax + 多列布局 + 自动加载实现瀑布流效果
2019/05/30 Javascript
layui radio点击事件实现input显示和隐藏的例子
2019/09/02 Javascript
Vue-resource安装过程及使用方法解析
2020/07/21 Javascript
[01:01:25]DOTA2上海特级锦标赛B组资格赛#2 Fnatic VS Spirit第三局
2016/02/27 DOTA
Python2.7基于淘宝接口获取IP地址所在地理位置的方法【测试可用】
2017/06/07 Python
Python基于pycrypto实现的AES加密和解密算法示例
2018/04/10 Python
Django 浅谈根据配置生成SQL语句的问题
2018/05/29 Python
Linux系统(CentOS)下python2.7.10安装
2018/09/26 Python
python创建学生管理系统
2019/11/22 Python
Python 实现将某一列设置为str类型
2020/07/14 Python
PyTorch 导数应用的使用教程
2020/08/31 Python
CSS去掉A标签(链接)虚线框的方法
2014/04/01 HTML / CSS
使用CSS3实现input多选框自定义样式的方法示例
2019/07/19 HTML / CSS
Proenza Schouler官方网站:纽约女装和配饰品牌
2019/01/03 全球购物
用Python匹配HTML tag的时候,<.*>和<.*?>有什么区别
2012/11/04 面试题
应聘护理专业毕业自荐书范文
2014/02/12 职场文书
创意婚礼策划方案
2014/05/18 职场文书
教师工作总结范文2014
2014/11/10 职场文书
员工辞职信范文
2015/03/02 职场文书
2015年服务员工作总结
2015/04/08 职场文书
Linux安装Docker详细教程
2022/07/07 Servers