調用函數時可以使用的正式參數類型python
def fun1(a,b):#形參 ''' :param a:#第一個加數 :param b:#第二個加數 :return:#a+b的和 ''' return a+b; h=fun1(3,3);#實參 print(fun1.__doc__); print(h);
def fun1(a,b=5):#b=5爲默認值 ''' :param a: :param b: :return: ''' return a+b; h=fun1(3);#未填寫參數值時。識別默認值 print(fun1.__doc__); print(h);
def printinfo( name, age = 35 ): "打印任何傳入的字符串" print ("名字: ", name); print ("年齡: ", age); return; printinfo('ok');
def student(name,age,**kw): print('姓名{} ,年齡{} other:{}'.format(name,age,kw)); student('ok',30,xingqu='學習',aihao='運動'); dic={'一':123,'二':223,'三':323};#當須要傳入多個鍵值的形式時,可經過字典形時傳遞 student('ok',30,**dic);
def show(name,age,sorce=90):#一旦以name=value的傳參數的形式存在 之後都要以這種形式存在 print('姓名:{} 年齡:{} 成績:{}'.format(name,age,sorce)); show('ok',30); show(name='ok',age='30',sorce=80); show(name='ok',sorce=80,age='30');#name=value的傳參數的形式 不要求順序 #show(name='ok',name='30',sorce=80);#報錯('OK',sorce=30,age=30) ,後者不能重複以name=value賦值
def GetSum(*nums): sum=0; for i in nums: sum+=i; return sum; print(GetSum(2,3)); print(GetSum(2,3,4,5)); print(GetSum(2,3,4,5,6,7,8));
def GetSum(*nums): sum=0; for i in nums: sum+=i; return sum; s=[2,3,4,5]; t=(2,3,4,5,6,7,8) print(GetSum()) print(GetSum(*s))#「*」表明把列表或元組當中的每個值逐個賦值給函數 print(GetSum(*t))
參數組合:定義一個函數,包含上述若干種參數:express
def f1(a, b, c=0, *args, **kw): print('a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw); args = (1, 2, 3, 4); kw = {'d': 99, 'x': '#'}; f1('A','B'); f1(b='B',a='A'); f1(b='B',a='A',c=9); f1(*args); f1('A','B',**kw); f1(*args,**kw);
小結數組
函數的做用域函數
#全局變量與局部變量的做用域不一樣 #生命週期不一樣 g_a=10;#全局變量 def changeNum(): global a a=5;#局部變量 print("函數內部:",a); print("調用前:",g_a); changeNum() print("調用後:",g_a); print("調用後:",a) #當全局變量和局部變量同名時,局部變量優先 -->就近一致原則
匿名函數學習
def fun1(a,b): ''' :param a:#第一個加數 :param b:#第二個加數 :return:#a+b的和 ''' return a+b; sum=lambda a,b:a+b; s=sum(2,2); print(s); sum=lambda a,b:a*b; s=sum(2,4); print(s);
def add(a,b,fun): ''' :param a: :param b: :param fun: 傳遞過來的函數 :return: ''' print(fun(a,b)); add(11,22,lambda a,b:a-b);
filter():對於序列中的元素進行篩選,最終獲取符合條件的序列spa
foo = [2, 18, 9, 22, 17, 24, 8, 12, 27] f=filter(lambda x:x%3!=0,foo); print(list(f)) fun=lambda x: x%2!=0; f=filter(fun,foo); print(list(f));
def is_not_empty(s): return s and len(s.strip())>0; names=[ 'ko',None,'','ok']; l=list(filter(lambda s:s and len(s.strip())>0,names)) print(l);
map():將序列的每一個元素傳入函數中執行,並把結果做爲新的list返回。orm
foo = [2, 18, 9, 22, 17, 24, 8, 12, 27]; print(list(map(lambda x:x%2,foo)));