1.6 多類型傳值和冗餘參數 1.7 函數的遞歸調用 原

1.6 多類型傳值和冗餘參數

元組和列表

list1 = [1,2]

def fun(x,y):
	print x,y

fun(*list1)  \\tuple和list可以加個*來直接傳參,注意參數的個數要一直,注意傳多個參數的時候*必須放在賦值參數後面

list1 = [1,2]

def fun(x,y,z):
	print x,y,z

字典

dic1 = {'a':1,'b':2}  \\注意,字典的key一定要和函數的形參一致

def fun(a,b):
	print a,b

fun(**dic1)   

冗餘參數

def fun(x,*args,**kwargs): \\其中*args和**kwargs就是冗餘參數
	print x
	print args
	print kwargs
	
fun(1)
	----------
1  
()
{}  函數正常運行,不會報錯

fun(1,'a','b','c')
	----------
1
('a', 'b', 'c')
{}

fun(1,'a','b','c',k1='v1',k2='v2')
----------
1
('a', 'b', 'c')
{'k2': 'v2', 'k1': 'v1'}

多出的參數會放到args這個變量裏,多出的k-v參數會放到kwargs裏,注意,其中k不能和之前定義的參數重複,且不加引號,value需要加引號

1.7 函數的遞歸調用

通俗地講就是自己調用自己

注意,遞歸調用最後必須有默認結果,比如 if n==0 遞歸參數必須是向默認結果收斂的

比如計算階乘

普通算法

def fun(n):
	sum = 1
	for i in range(1, n + 1):
		sum *= i
	return sum
print fun(5)

----------
120

遞歸調用

def fun(n):
	if n == 0 :  //這一個判斷可使得當n=0的時候停止遞歸調用,防止出現死循環
		return 1
	else :
		return n * fun(n-1)
print fun(5)
----------
120
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章