1.调用函数
#举几个使用函数的例子:
#比较大小
cmp(1,2) #x<y,返回-1
cmp(2,1) #x>y,返回1
cmp(1,1) #x==y,返回0
#数据类型转换
int('123') #string 转换为 int
str(123) #int 转换为 string
遇见不清楚的函数,可以使用help()查询,()里加函数名
2.编写函数
#使用def来定义自己的函数.
#求表中元素x的2次方的和,例:
def square_sum(L):
s = []
for x in L:
s.append(x**2)
return sum(s)
print square_sum([1,3,4,5,6])
#或者简写
def square_sum(L):
return sum(x*x for x in L)
print square_sum([1,2,3,4,5])
3.返回多值
#返回多个值,例:
#求一元二次方程,import math是引用math包
import math
def ans_equation(a,b,c):
x = b*b - 4*a*c
if x < 0:
return
elif x == 0:
return -b/(2*a)
else :
return ((math.sqrt(x)-b)/(2*a)),((math.sqrt(x)-b)/(2*a))
print ans_equation(2,3,0)
4.递归函数
#阶乘,例:
def fact(n):
if n == 1:
return 1
return n*fact(n-1)
#我还想举一个汉诺塔的例子,因为实在不错:
#参数为有几个移动的盘子,后面a、b、c为移动的柱子:
def move(n,a,b,c):
if n == 1:
print a,'-->',c
return
move(n-1,a,c,b)
print a,'-->',c
move(n-1,b,a,c)
move(6,'A','B','C')
5.定义默认参数
首先要知道,有一些函数,是可以因为传递参数不同而改变
例如:
int(‘123’),不传参数时,是输出十进制,但是,当传递参数时,就不一样了
int(‘123’,8),这时传了一个8进去,函数就会输出八进制的’123’,即83
#可以自定义次方函数,例:
def power(x,n=2):
s=1
while n>0:
n=n-1
s=s*x
return s
#注意!由于函数参数,从左到右匹配,
#所以,默认参数只能定义在必须参数后面
6.可变参数
可以接受多个参数,
如:def fn(*args),其中的*号,就是可以传入多个参数给可变参数
在函数内部,把args当成tuple就好了
#求平均数,例:
def average(*args):
if args:
return sum(args)*1.0/len(args)
else :
return 0.0