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 遞歸參數必須是向默認結果收斂的code

好比計算階乘遞歸

普通算法

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
相關文章
相關標籤/搜索