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中的字典来处理索引统计的方法
May 05 Python
在Python中定义和使用抽象类的方法
Jun 30 Python
Django2.1.3 中间件使用详解
Nov 26 Python
Python数据预处理之数据规范化(归一化)示例
Jan 08 Python
Python中xml和dict格式转换的示例代码
Nov 07 Python
Python生成器实现简单"生产者消费者"模型代码实例
Mar 27 Python
python小程序基于Jupyter实现天气查询的方法
Mar 27 Python
基于matplotlib xticks用法详解
Apr 16 Python
可视化pytorch 模型中不同BN层的running mean曲线实例
Jun 24 Python
Pycharm 2020.1 版配置优化的详细教程
Aug 07 Python
Python中猜拳游戏与猜筛子游戏的实现方法
Sep 04 Python
如何使用PyCharm及常用配置详解
Jun 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
Amazon Prime Video平台《无限住人 -IMMORTAL-》2020年开始TV放送!
2020/03/06 日漫
在WIN98下以apache模块方式安装php
2006/10/09 PHP
解析php中session的实现原理以及大网站应用应注意的问题
2013/06/17 PHP
PHP7生产环境队列Beanstalkd用法详解
2020/05/19 PHP
WordPress免插件实现面包屑导航的示例代码
2020/08/20 PHP
人人网javascript面试题 可以提前实现下
2012/01/05 Javascript
javascript alert乱码的解决方法
2013/11/05 Javascript
深入解析JavaScript中的变量作用域
2013/12/06 Javascript
js中判断用户输入的值是否为空的简单实例
2013/12/23 Javascript
jQuery设置指定网页元素宽度和高度的方法
2015/03/25 Javascript
jquery计算鼠标和指定元素之间距离的方法
2015/06/26 Javascript
javascript实现拖放效果
2015/12/16 Javascript
jQuery实现可展开折叠的导航效果示例
2016/09/12 Javascript
JS类的定义与使用方法深入探索
2016/11/26 Javascript
Django1.7+JQuery+Ajax验证用户注册集成小例子
2017/04/08 jQuery
Vue.js教程之axios与网络传输的学习实践
2017/04/29 Javascript
JavaScript实现无穷滚动加载数据
2017/05/06 Javascript
详解webpack运行Babel教程
2018/06/13 Javascript
vue中各选项及钩子函数执行顺序详解
2018/08/25 Javascript
Vue请求JSON Server服务器数据的实现方法
2018/11/02 Javascript
Vue性能优化的方法
2020/07/30 Javascript
在Python中使用元类的教程
2015/04/28 Python
Python使用正则表达式实现文本替换的方法
2017/04/18 Python
Python实现截取PDF文件中的几页代码实例
2019/03/11 Python
Python3 执行Linux Bash命令的方法
2019/07/12 Python
AmazeUI中各种的导航式菜单与解决方法
2020/08/19 HTML / CSS
香港莎莎官网Sasa.com:亚洲著名国际化妆品商城
2019/11/10 全球购物
为什么要做架构设计
2015/07/08 面试题
电子商务专业个人的自我评价
2013/12/19 职场文书
小学教师培训感言
2014/02/11 职场文书
园艺师求职信
2014/03/10 职场文书
党的群众路线教育实践活动对照检查材料(个人)
2014/09/24 职场文书
四风查摆问题及整改措施
2014/10/10 职场文书
欧也妮葛朗台读书笔记
2015/06/30 职场文书
2015大学迎新标语
2015/07/16 职场文书
Python批量解压&压缩文件夹的示例代码
2022/04/04 Python