python入門15 函式
阿新 • • 發佈:2018-11-17
函式
1 python內建函式
2 匿名函式lambda
3 自定義函式 def functionname(arg):...
#coding:utf-8 #/usr/bin/python """ 2018-11-11 dinghanhua 函式 """ '''內建函式''' print(round(2.345,2)) #四捨五入,保留2位小數;絕對值 print(abs(-23.333)) #絕對值 '''匿名函式 lambda''' lambda x: x**2 #匿名函式 print(list(map(lambdax:x**3,(1,2,3)))) #x的3次方 print(list(filter(lambda x:x%2==0 , [1,2,33,44]))) #取偶數
'''自定義函式''' '''函式定義''' def funcname(arg,sign): '''函式說明''' print('arg=%s,sign=%s'%(arg,sign)) return '''帶預設值的函式''' def funcname2(name,nation = 'china'): #第二個引數帶預設值,預設引數放到最後 print('name is %s,nation is %s'%(name,nation)) return name,nation '''函式呼叫''' #不帶引數名,按順序賦值 res = funcname('wegjoweg','no sign') print('沒有返回值,返回:',res) #指定引數名,順序可打亂 funcname(sign = 2,arg = 'ok') #預設引數未傳參 res = funcname2('小明') print(res) #預設引數傳參 res = funcname2('peter','Americia') print('返回多個值,返回的是一個tuple:',res)
'''預設引數=list 出現的異常''' def func(val,list=[]): list.append(val) return list list1 = func(10) list2 = func('abc',[]) list3 = func('2') print(list1,list2,list3) #[10, '2'] ['abc'] [10, '2'] list1和list3同一個地址,均指向預設引數的記憶體地址 #規避以上問題,list=None def func(val,list=None): if list is None: list = [] #每次建立一個 list.append(val) return list list1 = func(10) list2 = func('abc',[]) list3 = func('2') print(list1,list2,list3) #[10] ['abc'] ['2']
'''可變引數*arg,取出來是元組''' def func(name,*other): print('name=%s,other=%s'%(name,other)) func('john',18,'一年級') func('peter',20) '''可變引數**arg,取出來是字典''' def func(name,**other): print('name=%s,other=%s'%(name,other)) func('john',age=18,grade='一年級') other = {'age':18,'grade':'grade 1'} func('peter',**other)
the end!