python学习笔记 函数
形式:
def function(a,b,c=0,*args,**kw)#a,b必选参数,*args可变参数,**kw关键字参数
1.函数的返回值可以是多个参数。多个参数时,实际上返回的是一个tuple
2.c=0,是默认参数,但是需要注意的是,其是否初始化的问题。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 def add_end(L = None):#不能直接写L=[]因为两次重复调用,会出现问题。详情可以看http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001374738449338c8a122a7f2e047899fc162f4a7205ea3000 2 if L == None: 3 L = [] 4 L.append('END') 5 return L
上面函数如果修改为L=【】,重复多次调用add_end会出现问题
3.记得要检查参数类型 isinstance(args,(type1,.....))
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #z实际上一般的函数是需要检查函数类型的。一般使用内置函数isinstance() 2 def myabs(x): 3 if not isinstance(x,(int,float)): 4 raise TypeError("bad operand type") 5 if x >= 0: 6 return x 7 return -x
4.可变参数,其形式为*args.在调用时,使用func(1,2,3,4)时,其实其用到的是tuple,也就是说其参数不可改变。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #可变参数 2 def calc(numbers): 3 sum = 0 4 for i in numbers: 5 sum += i 6 return sum 7 def calc1(*numbers): 8 sum = 0 9 for i in numbers: 10 sum += i 11 return sum 12 #可变参数与不可变参数 13 print calc([1,2,3]) 14 print calc((1,2,3)) 15 print calc1(1,2,3) 16 #如果可变参数调用的的是一个list,那么我们可以使用这种形式 17 l = [1,2,3] 18 print calc1(*l)
5。**kw为关键字参数,其为一个dict
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #关键字参数 **kw 2 def kw(name,job,**kw): 3 print 'name:',name, 'job:',job,'other',kw 4 calc1(1,2,3,4) 5 #关键字参数 6 kw('tom','doc',gender = 'M') 7 #可变参数与不可变参数
6. 多种参数综合使用时注意其使用顺序,另外需要注意的是**key种的key不能使用已经出现的参数名
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 def all(a,b,c=0,*d,**e): 2 print 'a:',a 3 print 'b:',b 4 print 'c:',c 5 print 'd:',d 6 print 'e:',e 7 all(1,2,3,4) 8 all(1,2,3,4,5,6,7,asa = 8) 9 all(1,2,[3,4,5,6,7])