Python学习之基础语言篇——函数参数详解
2016-02-23 00:00
1886 查看
摘要: python解析器解析函数参数的一般原则
Python中函数的参数主要追寻两大类参数,位置参数和关键字参数
关键字参数才有默认值,位置参数没有默认值
解析原则:
定义和调用函数中位置参数应该放在关键字参数的前面
非任意数量位置参数可以通过关键字参数传值,任意数量位置参数不能通过关键字参数传值
任意数量位置参数后面必须接关键字参数(定义函数或函数传值)
任意数量位置参数和任意数量关键字参数只能在定义中定义一次。
任意数量关键字参数放在所有类型参数的后面
一:非任意数量位置参数或关键字参数
1.纯位置参数,就是多个参数间的相对位置,如:
2.纯关键字参数,实际上就是参数的赋值,引申为参数设置默认值,如:
3.位置参数与关键字参数混搭,位置参数一般放在关键字参数前面,如:
二:任意数量位置参数或关键字参数
1.任意数量位置参数,解析器一般将其包装为list或tuple,在参数前面加“*”表示,如:
2.任意数量关键字参数,编译器一般将其包装为dict,在参数前面加“**”表示,如:
三:混搭例子:
Python中函数的参数主要追寻两大类参数,位置参数和关键字参数
关键字参数才有默认值,位置参数没有默认值
解析原则:
定义和调用函数中位置参数应该放在关键字参数的前面
非任意数量位置参数可以通过关键字参数传值,任意数量位置参数不能通过关键字参数传值
任意数量位置参数后面必须接关键字参数(定义函数或函数传值)
任意数量位置参数和任意数量关键字参数只能在定义中定义一次。
任意数量关键字参数放在所有类型参数的后面
一:非任意数量位置参数或关键字参数
1.纯位置参数,就是多个参数间的相对位置,如:
def f(arge1,arge2,arge3,arge4): print(arge1,arge2,arge3,arge4) pass f(1,'a',3,4)#将输出1,a,3,4 f(1,2,arge3=2,arge4=4)#将输出1,2,2,4 #必须为4个参数,下面几种方式都会调用失败 f(1) f(1,'a') f(1,'a',3) f(1,arge2=2,3,4)#违背了解析原则1
2.纯关键字参数,实际上就是参数的赋值,引申为参数设置默认值,如:
def f(arge1=1,arge2=2,arge3=3,arge4=4): print(arge1,arge2,arge3,arge4) pass f()#将输出1,2,3,4 f(3)#将输出3,2,3,4 f(arge3=3)#将输出1,2,3,4 f(2,arge3=3)#将输出2,2,3,4 #下面几种方式都会调用失败,违背了解析原则1 f(arge3=3,3)
3.位置参数与关键字参数混搭,位置参数一般放在关键字参数前面,如:
def f(arge1,arge2,arge3,arge4=3): print(arge1,arge2,arge3,arge4) pass f(1,2,3,4)#将输出1,2,3,4 f(1,2,3)#将输出1,2,3,3 f(1,2,arge3=2,arge4=2)#将输出1,2,2,2 f(1,2,arge3=3)#将输出1,2,3,3 #下面几种方式都会调用和定义失败,违背了解析规则1 f(1,arge2=2,3) f(1,arge2=2,3,arge4=3) def f(arge1,arge2,arge3=3,arge4): print(arge1,arge2,arge3,arge4) pass
二:任意数量位置参数或关键字参数
1.任意数量位置参数,解析器一般将其包装为list或tuple,在参数前面加“*”表示,如:
def f(arge1,*arge2,arge3): print(arge1,arge2,arge3) pass f(1,*(2,2),arge3=3)#将输出1,(2,2),3 f(1,(2,2),arge3=3)#将输出1,((2,2),),3 def ff(arge1,arge2,*arge3): print(arge1,arge2,arge3) pass ff(1,2,*(2,2))#将输出1,2,(2,2) #下面几种方式都会调用或定义失败 f(1,*(2,2),3)#违背解析原则3 f(arge1=1,*(2,2),arge3=3)#违背解析原则1 f(1,arge2=(2,2),arge3=3)#违背了解析原则2 def f(arge1,*arge2,*arge3):#违背了解析原则4 print(arge1,arge2,arge3) pass
2.任意数量关键字参数,编译器一般将其包装为dict,在参数前面加“**”表示,如:
def f(arge1,*arge2,**arge3): print(arge1,arge2,arge3) pass f(1,3,2,4,y=2,x=1)将输出1,(3,2,4),{'x':1,'y':2} #下面几种函数定义方式都会失败 #违背了解析原则5 def f1(arge1,**arge2,*arge3): print(arge1,arge2,arge3) pass def f2(arge1,**arge2,arge3): print(arge1,arge2,arge3) pass def f3(arge1,**arge2,arge3=4): print(arge1,arge2,arge3) pass
三:混搭例子:
def f(arg1, arg2='hello', *args, **kwargs): print(arg1, arg2, args, kwargs) f(1,3,3)#将输出1,'hello',(3,3),{} f(1,x=1)#将输出1,'hello',(),{'x':1}
相关文章推荐
- Python动态类型的学习---引用的理解
- Python3写爬虫(四)多线程实现数据爬取
- 垃圾邮件过滤器 python简单实现
- 下载并遍历 names.txt 文件,输出长度最长的回文人名。
- install and upgrade scrapy
- Scrapy的架构介绍
- Centos6 编译安装Python
- 使用Python生成Excel格式的图片
- 让Python文件也可以当bat文件运行
- [Python]推算数独
- Python中zip()函数用法举例
- Python中map()函数浅析
- Python将excel导入到mysql中
- Python在CAM软件Genesis2000中的应用
- 使用Shiboken为C++和Qt库创建Python绑定
- FREEBASIC 编译可被python调用的dll函数示例
- Python 七步捉虫法