问题描述
在python中,定义一个函数需要使用def语句,依次写出函数名,括号,括号中的参数和冒号:,接着在缩进后编写函数,函数的返回值用return语句返回。定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了。对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复杂逻辑被封装起来,调用者无需了解。Python的函数定义非常简单,但灵活度却非常大。除了正常定义的必选参数外,还可以使用默认参数、可变参数和关键字参数,使得函数定义出来的接口,不但能处理复杂的参数,还可以简化调用者的代码。
解决方案
以math.sqrt()函数为例
定义一个函数,quadratic(a,b,c),接收三个参数,返回一元二次方程ax²+bx+c=0的两个解。
import math
def quadratic(a,b,c):
if a == 0:
raise TypeError('a不能为0')
if not isinstance(a,(int,float)) or not isinstance(b,(int,float)) or not isinstance(c,(int,float)):
raise TypeError( 'Bad operand type')
delta = math.pow(b,2) - 4*a*c
if delta < 0:
return '无实根'
x1= (math.sqrt(delta)-b)/(2*a)
x2= (math.sqrt(delta)+b)/(2*a)
return x1,x2
print(quadratic(1,3,1))
print(quadratic(2,3,-4))
上面的函数会输出以下结果
结语
(1)定义函数的时候先对参数的数据类型检查一遍,确定函数名和参数的数量。
(2)函数执行完毕也没有return随时返回函数结果,函数运行完后没有return语句时,自动return None。
(3)在语法上,返回一个tuple可以省略括号,而多个变量可以同时接收一个tuple,按位置赋给对应的值。
实习主编 | 王文星
责 编 | 王楠岚
where2go 团队