python函数
官方函数
http://docs.python.org/2/library/functions.html#abs
定义函数
定义函数
def student(name):
print 'name:',name
设置默认参数(不输入参数时,则使用默认参数值)
def student(name,age=18)
print 'name:',name
print 'age:',age
传入可变参数(这样函数就可以传入多个参数)
def sum(*num):
sum = 0
for n in num:
sum = sum +n
return sum
递归函数
def fact(n):
if n==1:
return 1
return n * fact(n - 1)
===> fact(5)
===> 5 * fact(4)
===> 5 * (4 * fact(3))
===> 5 * (4 * (3 * fact(2)))
===> 5 * (4 * (3 * (2 * fact(1))))
===> 5 * (4 * (3 * (2 * 1)))
===> 5 * (4 * (3 * 2))
===> 5 * (4 * 6)
===> 5 * 24
===> 120
递归调用的次数过多,会导致栈溢出。解决递归调用栈溢出的方法是通过尾递归优化
尾递归是指,在函数返回的时候,调用自身本身,并且,return语句不能包含表达式。这样,编译器或者解释器就可以把尾递归做优化,使递归本身无论调用多少次,都只占用一个栈帧,不会出现栈溢出的情况。
尾递归
def fact(n):
return fact_iter(n, 1)
def fact_iter(n, total):
if n == 1:
return total
return fact_iter(n - 1, n * total)
===> fact_iter(5, 1)
===> fact_iter(4, 5)
===> fact_iter(3, 20)
===> fact_iter(2, 60)
===> fact_iter(1, 120)
===> 120
学习参考
http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000