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的设计模式编程入门指南
Apr 02 Python
Python中__init__.py文件的作用详解
Sep 18 Python
PyCharm安装第三方库如Requests的图文教程
May 18 Python
Python判断中文字符串是否相等的实例
Jul 06 Python
python3.5基于TCP实现文件传输
Mar 20 Python
在pycharm中使用git版本管理以及同步github的方法
Jan 16 Python
500行Python代码打造刷脸考勤系统
Jun 03 Python
PyCharm 配置远程python解释器和在本地修改服务器代码
Jul 23 Python
Numpy之reshape()使用详解
Dec 26 Python
pyinstaller还原python代码过程图解
Jan 08 Python
Python更改pip镜像源的方法示例
Dec 01 Python
Python命令行参数argv和argparse该如何使用
Feb 08 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执行sql语句的写法
2009/03/10 PHP
PHP 类型转换函数intval
2009/06/20 PHP
php判断电脑访问、手机访问的例子
2014/05/10 PHP
ThinkPHP实例化模型的四种方法概述
2014/08/22 PHP
表单提交错误后返回内容消失问题的解决方法(PHP网站)
2015/10/20 PHP
PHPExcel中文帮助手册|PHPExcel使用方法(分享)
2017/06/09 PHP
php生成复杂验证码(倾斜,正弦干扰线,黏贴,旋转)
2018/03/12 PHP
基本jquery的控制tabs打开的数量的代码
2010/10/17 Javascript
Javascript继承机制的设计思想分享
2011/08/28 Javascript
yepnope.js 异步加载资源文件
2011/09/08 Javascript
jquery 年会抽奖程序
2011/12/22 Javascript
jquery.validate的使用说明介绍
2013/11/12 Javascript
js调用后台、后台调用前台等方法总结
2014/04/17 Javascript
基于jquery实现的树形菜单效果代码
2015/09/06 Javascript
BooStrap对导航条的改造实践小结
2016/09/21 Javascript
Vue过滤器的用法和自定义过滤器使用
2017/02/08 Javascript
Vue.set()实现数据动态响应的方法
2018/02/07 Javascript
对vue下点击事件传参和不传参的区别详解
2018/09/15 Javascript
Vue源码解析之数组变异的实现
2018/12/04 Javascript
在Chrome DevTools中调试JavaScript的实现
2020/04/07 Javascript
[01:09:19]DOTA2-DPC中国联赛 正赛 VG vs Aster BO3 第二场 2月28日
2021/03/11 DOTA
Python中的作用域规则详解
2015/01/30 Python
浅谈python jieba分词模块的基本用法
2017/11/09 Python
python中使用%与.format格式化文本方法解析
2017/12/27 Python
python中format()函数的简单使用教程
2018/03/14 Python
将Python字符串生成PDF的实例代码详解
2019/05/17 Python
Python3标准库之functools管理函数的工具详解
2020/02/27 Python
如何在mac下配置python虚拟环境
2020/07/06 Python
Canvas绘制浮动球效果的示例
2017/12/29 HTML / CSS
美国复古街头服饰精品店:Need Supply Co.
2017/02/22 全球购物
alice McCALL官网:澳大利亚时尚品牌
2020/11/16 全球购物
肯尼迪就职演说稿
2013/12/31 职场文书
信息服务专业毕业生求职信
2014/03/02 职场文书
市场营销专业求职信
2014/06/17 职场文书
大学生交通专业求职信
2014/09/01 职场文书
2015年妇幼卫生工作总结
2015/05/23 职场文书