5.2 函数的定义
和单纯的函数调用不同,我们现在是函数的设计者,是提供函数给别人或者自己使用的。设计者需要确定函数的名字,它需要什么参数,得到什么结果,以及它是怎么计算出来的。
下面我们来看一个简单的函数f(x)=3x+4的python实现:
def func(x):
y=3*x+4
return y
这个函数就是f(x)=3*x+4的python语言版本。下面逐一说明函数定义的各种要素:
函数名:函数的名称,命名规则和变量一致,在这个例子里,函数名是func。
参数:输入的内容,自变量。参数可以有多个,以逗号分隔。
函数体:做出计算的代码。
返回值:也就是返回应变量的值,最终函数计算的结果,由return来表达这个语法,return后的值就是函数计算的值。 也隐含了函数的值的类型。
最开始def必须写上,它是define(定义)的缩写
调用函数就是使用函数进行计算:
def func(x): y=3*x+4 return ydef func2(x): return func(x)*func(x) a=6b=func(a)print(b)print(func2(5))
这是一个完整的函数定义,以及调用的代码。以下几点是需要注意的:
1.定义在前,调用在后。如果不是自己定义的,那么引用在前,调用在后。
2.函数定义后就可以被调用,甚至在别的函数定义内部,例如func2调用了func。
3.函数名通常是小写开头,命名规则和变量名相同
调用func函数的代码:“b=func(a)”。具体细节为:a的值是6,func(a)就相当于把6这个值传入到函数func中。然后这个值会赋给func的参数x,然后运算后y的值是22,最后return y把22这个值返回,也就是函数的计算结果。
这里func(a)将得到计算结果(根据 func函数定义来计算),然后把这个值赋给变量b。
func怎么得到计算的结果值呢?秘密就是return语句——第4行语句“return y;”。return后面的表达式,就是整个函数的值。如果里面的return语句写成了这样:“return 4;”那么这个函数不管是什么输入,中间计算的是什么(也就是代码1的第3行代码的计算),计算出来的结果都是4。
func2用了更简洁的写法,根本就不需要y变量。第一个函数也可以这么写:return 3*x+4
如何把已经有的代码,设计成一个函数呢?例如,下面是输入m和n,然后打印它们的和:
m=int(input())n=int(input())s=m+nprint(s)
现在要把上面的代码设计一个函数,那么就是这么写:
def abc(m,n): s=m+n print(s)#现在来试试这个函数 m=int(input())n=int(input())abc(m,n)#也可以指定参数abc(34,-8)
我们可以看到,原来的代码直接复制过去,把关键会变化的两个值作为函数的参数就可以了。
abc函数是没有值的,它的和是打印出来,并不能拿来继续用(例如继续加减乘除),如果我们需要得到两者的和,而不是打印,那么函数就要这么修改:
def abc(m,n): s=m+n return s#现在来试试这个函数 m=int(input())n=int(input())he=abc(m,n)print(he)
#也可以指定参数he=abc(34,-8)print(he)