标签:
先说递归:因为原理简单,但是要用灵活运用的话,是非常困难的。
递归的原理就是在函数内部调用函数自己,以实现循环的目的,
比如一个阶乘函数def fn(n):
if n==1:
return n;
else :
return fn(n-1)*n;
还有一种尾递归的说法,原因是递归非常容易栈溢出,所以在返回值中不应该出现剩函数本身,
上面的阶乘就可以化为 def fn(n,product):
if n==1:
return product;
else :
return fn(n-1,n*product);
def use(n):
return fn(n,1);
再说函数的参数:
函数的参数分为5种类型,位置参数,默认参数,可变参数,关键字参数,特定关键字参数。
定义函数中,这五类参数一定是有先后顺序的,但是可以缺少其中的某几项
位置参数就是一般的参数,def f(a,b):
pass
默认参数:def f(a=”a“):
pass;
调用时可以直接 f(),或者f(”b“);
可变参数就是当参数个数不确定是可以用的比如:def f(*pra):
pass
关键字参数 为def f(**kw):
pass;
调用时f(a=”a“,b=”b“);
可变参数封装成的是一个tuple,而关键字参数封装的是一个dic;
特定关键字参数为def f(*,a="a",b):
pass
从定义可以看出,调用时参数a是可以缺省的,b就不能了f(”b“);
标签:
原文地址:http://www.cnblogs.com/swpuzhangjie/p/4644065.html