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使用reportlab画图示例(含中文汉字)
Dec 03 Python
python支持断点续传的多线程下载示例
Jan 16 Python
零基础写python爬虫之抓取百度贴吧代码分享
Nov 06 Python
Python之日期与时间处理模块(date和datetime)
Feb 16 Python
定制FileField中的上传文件名称实例
Aug 23 Python
python sys.argv[]用法实例详解
May 25 Python
python得到单词模式的示例
Oct 15 Python
python对象与json相互转换的方法
May 07 Python
Python实现基于SVM的分类器的方法
Jul 19 Python
python异常处理try except过程解析
Feb 03 Python
python pprint模块中print()和pprint()两者的区别
Feb 10 Python
使用Django和Postgres进行全文搜索的实例代码
Feb 13 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
写一个用户在线显示的程序
2006/10/09 PHP
zf框架db类的分页示例分享
2014/03/14 PHP
Codeigniter里的无刷新上传的实现代码
2019/04/14 PHP
JavaScript语言中的Literal Syntax特性分析
2007/03/08 Javascript
js函数的引用, 关于内存的开销
2012/09/17 Javascript
在Node.js中实现文件复制的方法和实例
2014/06/05 Javascript
nodejs 整合kindEditor实现图片上传
2015/02/03 NodeJs
javascript的变量、传值、传址、参数之间关系
2015/07/26 Javascript
js实现tab切换效果实例
2015/09/16 Javascript
JS仿百度自动下拉框模糊匹配提示
2016/07/25 Javascript
AngularJS中的promise用法分析
2017/05/19 Javascript
jQuery中将json数据显示到页面表格的方法
2018/05/27 jQuery
Vuerouter的beforeEach与afterEach钩子函数的区别
2018/12/26 Javascript
vue之debounce属性被移除及处理详解
2019/11/13 Javascript
Python学习笔记(一)(基础入门之环境搭建)
2014/06/05 Python
Python性能优化的20条建议
2014/10/25 Python
python线程池threadpool使用篇
2018/04/27 Python
解决使用PyCharm时无法启动控制台的问题
2019/01/19 Python
Python devel安装失败问题解决方案
2020/06/09 Python
Django使用django-simple-captcha做验证码的实现示例
2021/01/07 Python
在Pycharm中安装Pandas库方法(简单易懂)
2021/02/20 Python
精美的手工家居和生活用品:Nkuku
2019/11/01 全球购物
EJB的几种类型
2012/08/15 面试题
几道Web/Ajax的面试题
2016/11/05 面试题
护理专科毕业推荐信
2013/11/10 职场文书
网站设计师的岗位职责
2013/11/21 职场文书
商务英语求职自荐信范文
2013/12/24 职场文书
职业规划书如何设计?
2014/01/09 职场文书
投标邀请书范文
2014/01/31 职场文书
毕业生个人求职自荐信
2014/02/26 职场文书
防灾减灾日活动总结
2014/08/26 职场文书
创先争优个人承诺书
2014/08/30 职场文书
2016年寒假学习心得体会
2015/10/09 职场文书
JPA如何使用entityManager执行SQL并指定返回类型
2021/06/15 Java/Android
Python中异常处理用法
2021/11/27 Python
zabbix配置nginx监控的实现
2022/05/25 Servers