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进阶教程之模块(module)介绍
Aug 30 Python
Python中运算符"=="和"is"的详解
Oct 08 Python
深入理解NumPy简明教程---数组2
Dec 17 Python
解决python升级引起的pip执行错误的问题
Jun 12 Python
python-str,list,set间的转换实例
Jun 27 Python
Django框架模板语言实例小结【变量,标签,过滤器,继承,html转义】
May 23 Python
python tkinter实现界面切换的示例代码
Jun 14 Python
PyQt5固定窗口大小的方法
Jun 18 Python
python自动结束mysql慢查询会话的实例代码
Oct 27 Python
Python一行代码解决矩阵旋转的问题
Nov 30 Python
Python将二维列表list的数据输出(TXT,Excel)
Apr 23 Python
Python实现aes加密解密多种方法解析
May 15 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发电子邮件
2006/10/09 PHP
一个简单的MySQL数据浏览器
2006/10/09 PHP
PHP 开发环境配置(测试开发环境)
2010/04/28 PHP
Nginx服务器上安装并配置PHPMyAdmin的教程
2015/08/18 PHP
php实现面包屑导航例子分享
2015/12/19 PHP
PHP绕过open_basedir限制操作文件的方法
2018/06/10 PHP
CSDN轮换广告图片轮换效果
2007/03/27 Javascript
js 代码集(学习js的朋友可以看下)
2009/07/22 Javascript
Jquery 最近浏览过的商品的功能实现代码
2010/05/14 Javascript
JavaScript判断窗口是否最小化的代码(跨浏览器)
2010/08/01 Javascript
利用Keydown事件阻止用户输入实现代码
2014/03/11 Javascript
AngularJS 避繁就简的路由
2016/07/01 Javascript
jQuery.cookie.js实现记录最近浏览过的商品功能示例
2017/01/23 Javascript
jQuery中each循环的跳出和结束实例
2017/08/16 jQuery
解决Layui选择全部,换页checkbox复选框重新勾选的问题方法
2018/08/14 Javascript
使用express获取微信小程序二维码小记
2019/05/21 Javascript
使用JS location实现搜索框历史记录功能
2019/12/23 Javascript
微信小程序swiper实现文字纵向轮播提示效果
2020/01/21 Javascript
JavaScript设计模式之门面模式原理与实现方法分析
2020/03/09 Javascript
Python多线程编程(六):可重入锁RLock
2015/04/05 Python
python中base64加密解密方法实例分析
2015/05/16 Python
详解Python中的Cookie模块使用
2015/07/06 Python
Python利用ansible分发处理任务
2015/08/04 Python
python机器学习之神经网络(三)
2017/12/20 Python
浅谈多卡服务器下隐藏部分 GPU 和 TensorFlow 的显存使用设置
2020/06/30 Python
python -v 报错问题的解决方法
2020/09/15 Python
英国翻新电子产品购物网站:Tech Trade
2017/12/25 全球购物
经理管理专业毕业自荐书范文
2014/02/12 职场文书
爱心捐款倡议书范文
2014/05/12 职场文书
激励口号大全
2014/06/17 职场文书
2014年中职班主任工作总结
2014/12/16 职场文书
违纪学生保证书
2015/02/27 职场文书
成品仓管员岗位职责
2015/04/01 职场文书
班组长如何制订适合本班组的工作计划?
2019/07/10 职场文书
JavaScript实现队列结构过程
2021/12/06 Javascript
asyncio异步编程之Task对象详解
2022/03/13 Python