Python中,定义一个函数要使用def语句,依次写出函数名,括号,括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回。
以自定义一个求函数返回值的my_abs函数为例:
def my_abs(x):
if x >= 0:
return x
else:
return -x
函数体内部语句在执行时,只要执行到return 时,函数就执行完毕,并将结果返回。因此,函数内部通过条件判断和循环可以实现非常复杂的逻辑。
空函数
如果想定义一个什么事也不做的空函数,可以用pass语句:
def nop():
pass
pass语句什么都不做,实际用途是用来作为占位符,现在没想好怎么写函数的代码,就可以先放一个pass,让代码能运行起来。
pass还可以用在其他语句里:
if age >= 18:
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
import math 表示导入math包,并允许后续代码引用math包里的数学函数。
>>> x, y = move(100, 100, 60, math.pi / 6)
>>> print(x, y)
151.961524 70.0
其实Python函数返回的仍然是单一值,一个tuple:
>>> r = move (100, 100, 60, math.pi / 6)
>>> print (r)
(151.961524, 70.0)
多个变量同时接受一个tuple,按位置赋给对应的值。
练习:定义一个quadratic(a, b, c),接受三个参数,返回一元二次方程:
import math
def quadratic(a,b,c):
m = b*b - 4*a*c
if m < 0:
print("此方程无解!")
else:
x1 = (-b + math.sqrt(m)) / (2*a)
x2 = (-b - math.sqrt(m)) / (2*a)
if x1 == x2 :
print("此方程只有一个实根:x1 = x2 =%.2f " % x1)
else:
print("此方程有两个实根:x1 = %.2f, x2 = %.2f" % (x1, x2))
测试:
quadratic(1,0,-1)