Python内置了很多函数,可以直接调用
要调用一个函数,需要知道函数的名称和参数,例如:
abs(x):返回x的绝对值; int():将其他数据类型转换为整数; str():把其他类型转换成str
cmp(x,y):2个参数,如果x<y,返回 -1,如果x>y,返回1,如果相等,返回0
在Python中定义一个函数使用def语句,依次写出函数名、括号,括号中的参数,还有冒号:
在缩进块中编写函数体,返回的函数值用return返回
* 函数返回多值
import math
def move(x,y,step,angle):
nx=x+step*math.cos(angle)
ny=y-step*math.sin(angle)
return nx,ny
x,y=move(100,100,60,math.pi/6)
print(x,y)
结果:151.96152422706632 70.0 #返回的结果
仍然是单一值,是一个tuple
在语法上,返回一个tuple可以省略括号,而多个变量可以同时接收一个tuple,按位置赋予对应的值
*递归函数
如果一个函数在内部调用自己本身,这个函数就是递归函数
阶乘fact(n):
fact(n)=n!=n*(n-1)!=fact(n-1)*n
递推可得:
def fact(n):
if n==1:
return 1
return n*fact(n-1)
练习
编写一个函数,给定输入n,a,b,c,打印移动步骤:move(n,a,b,c)
例如:输入move(2,‘a’,‘b’,‘c’),打印出:A-->B;A-->C;B-->C
def move(n,a,b,c):
if n==1:
print(a,'-->',c) #只有一个盘子从A到C的情况,所有递归,最终都是走到这一步
return move(n-1,a,c,b) #将A柱的n-1个盘子移动到B
print(a,'-->'c) #将A柱最后剩下的1个盘子移动到C,和n为1的情况一样
move(n-1,b,a,c) #将B柱的n-1个盘子移动到C
*默认参数 (默认参数只能定义在必需参数的后面)
函数的默认参数的作用是简化调用,例如:
def power(x,n=2):
s=1
while n>0:
n=n-1
s=s*x
return s
*可变参数 (*args)
如果想让一个函数接受任意个参数,可以这样定义:
def fn(*args):
print(aargs)
解释:Python解释器会把传入的一组参数组装成一个tuple传递给可变参数
在函数内部,直接把变量args看成一个tuple就可以