4_函数
1. 参数重载
1.1 参数重载的第一种情况:默认参数重载,将默认参数放在参数列表的最后,并且一定要保证默认参数指向的是不变对象。下面是指向可变对象和不变对象的例子:
def add_end1(L=[]):
L.append('end')
return L
def add_end2(L=None):
L.append('end')
return L
>>>add_end1()
['end']
>>>add_end1()
['end','end']
>>>add_end2()
['end']
>>>add_end2()
['end']
1.2 参数重载的第二种情况:可变参数数目重载,在参数前添加一个*号即可:
def calc(*number):
sum=0
for n in number:
sum+=n*n
return sum
##这样既可以把列表和元组传进去,也可以手动输入多个不确定数目的参数
1.3 参数重载的第三种情况:关键字参数和命名关键字参数
##二者一般都用于字典中
def person1(name,age,**kw):
print()
##可变参数后面的命名关键字参数不需要*分隔符
def person2(name,age,*args,city,job):
print()
##命名关键字参数的传入必须要传入参数的名字
def person3(name,age,*,city,job):
print()
2. Tips
2.1 函数返回多个值实际上是返回一个元组
2.2 input()函数默认接受为字符串类型,需要使用强制转换函数
2.3 range()函数返回的是一个整数可迭代对象,并不是真正意义上的列表类型。默认必须参数为stop。range(start,stop,step),左开右闭
2.4 不返回值的函数称为过程
2.5 定义函数时,由于不像C语言那样对参数类型的定义有严格限制,所以如果有必要,需要对参数类型写语句做一个检查,防止出错时编译器不能提供准确的定位。
def my_abs(x):
if not isinstance(x,(int,float)): ##类型检查语句
raise TypeError('bad operand type')
if(x>0):
return x
else:
return -x