第七章
函数的定义及调用
def add(num):#num时形式参数 s=0 for i in range(0,num+1): s+=i print(s) add(5)#5,1000是实际参数 add(1000)
函数参数传递
函数定义阶段时赋值叫默认值参数;函数调用的时候传递的参数叫关键字参数;
在一个函数传递参数时,既可以使用位置传参也可以使用关键字传参,也可以一同使用,在一同使用时要注意,必须位置参数在前,关键字参数在后;
当位置参数和默认值参数同时存在,必须遵循位置参数在前,默认值参数在后;
可变参数
个数可变位置参数:
def main(*para):
print(type(para))
for i in para:
print(i)
main(1,2,3,4,5,6)
main(1000000)
main('文明6')
调用列表时,在列表前加一颗星*,可以将列表解包,都放入元组中;
main([1,2,3,4,5,6]) main(*[1,2,3,4,5,6])
个数可变关键字参数:
def main2(**kwpara): print(type(kwpara)) for key,value in kwpara.items(): print(key,'--------->',value) main2(name='文明6',age='5000',height='100') d={'name':'文明6','age':5000,'height':1000} main2(**d)
可变关键字参数也可以系列解包操作;
函数返回值
一个返回值:
def main(a,b): s=a+b return s print(main(main(1,2),b=9))
多个返回值:
def get_sum(num): s=0 odd_sum=0 even_sum=0 for i in range(num): if i % 2 == 0: odd_sum=odd_sum+i else: even_sum=even_sum+i s+=i return s,odd_sum,even_sum result= get_sum(10) print(result)
多个返回值返回类型是元组;
也可以 a,b,c=get_sum(10)进行解包赋值;
变量的作用域
当全局变量和局部变量名称相同时,局部变量调用优先级高;
在函数中定义全局变量使用global实现,但是定义全局变量和全局变量赋值不能在同一行;
匿名函数lambda
递归
def main(n): if n == 1: return 1 else: return n*main(n-1) print(main(5))
def main(n): if n == 1 or n == 2: return 1 else: return main(n-1) + main(n-2) print(main(3))
常用的内置函数
ATT:字符串里面的浮点串不能直接转整形,浮点数可以转;
list1=[11,221,3123,4123,12335,1236,12317,8,9,10] asc=sorted(list1) desc=sorted(list1,reverse=True) print(asc,desc) weak=reversed(list1) print(weak) ans=list(weak) print(ans) x=['a','b','c','d','e','f','g','h'] y=[10,20,30,40,50,60,70,80,90] zippp=zip(x,y) print(zippp) ans1=list(zippp) print(ans1) enumerate(y,start=1) print(type(y)) print(list(y))
next使用时对象必须是未转换过类型的;
filter和map函数第一个参数都是函数;
def main(num): return num * num obj=filter(main,range(1,11)) print(list(obj)) def main1(x): return x.upper() new_list=['hoiaso','asld','asf'] obj2=map(main1,new_list) print(list(obj2))
其他函数
总结
实战
def main(x): s=0 list=[] for i in x: if i.isdigit(): list.append(int(i)) s=sum(list) return s,list inpu=input('----') list,s=main(inpu) print(s,list)
def main(x): list=[] for i in x: if 'A'<=i<='Z': list.append(chr(ord(i)+32)) elif 'a'<=i<='z': list.append(chr(ord(i)-32)) else: list.append(i) return ''.join(list) s=input('input:') new=main(s) print(new)