前面我们已经讲过如何调用python内置的一些函数,但当内置函数不能满足我们的需求时,就需要自己定义函数,那么在python中如何自己定义函数呢?下面我们重点讲解python中函数的定义与使用。
在python中,定义函数使用def语句,def语句后依次时函数名,括号,括号中的函数参数以及冒号,最后是冒号后缩进的函数体,函数的返回值使用return 语句返回,如果不写return 或者说写return 但没有写具体的返回值,都和return None一样,返回None值。下面我们定义一个求绝对值的函数。
>>> def my_abs(x):
if x >= 0:
return x
else:
return -x
>>> my_abs(-9)
9可以看到,当函数执行到return 时,函数执行完毕,就不再继续执行。
空函数,如果我们想定义一个空函数,可以使用pass语句。
>>> def pop():
passpass语句什么都不做,仅仅作为一个占位符存在。那么有人就问了,既然什么都不做,那么要它干什么或者说意义是什么?比如说我们现在定义一个函数,但具体的函数体还没有想好怎么去写,这是就可以使用pass语句定义一个空函数,使编译的时候不会报错,进而影响其他模块的设计。
返回多个值
前面我们定义的函数返回值是一个,那么函数可以返回多个值吗?答案是肯定的。比如在游戏中,游戏车从一个点移动到另一个点,必然会涉及到坐标点,而坐标点就包含两个以上的值,甚至还包含速度等等信息。这就要求我们定义函数时能返回多个值。下面我们来看一个例子。
>>> import math
>>> def move(x,y,step,angle=0):
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首先,说明 import math 表示导入 math 包,并允许使用其中的sin,cos函数。其次,其实python函数返回值还是一个值,我们看到返回两个或者多个其实是一种假象。返回值是一个tuple。只不过在语法上,tuple可以省略括号,并且把其中的元素依次赋值给多个变量。python返回的多个值,其实是一个tuple.
>>> r = move(100,100,60,math.pi/6)
>>> print(r)
(151.96152422706632, 70.0)小结:
1.定义函数时,需要明确函数名和参数个数。
2.函数内部用return返回函数计算结果,如果没有写return,则返回return None.
3.函数可以同时返回多个值,但其实时返回一个tuple,把其中的元素分别赋予了多个变量。