例子:
当我们知道半径r的值时,就可以根据公式计算出面积,假设我们需要计算3个不同大小的圆的面积:
#!/usr/bin/env python # -*- coding:utf-8 -*- r1=2.34 r2=7.28 r3=10.32 s1=3.14*r1*r1 s2=3.14*r2*r2 s3=3.14*r3*r3
当代码有规律的重复的时候,每次写3.14*x*x不仅很麻烦,而且如果要把3.14改成3.14159的时候得全部替换
有了函数,我们不再每次写s=3.14*x*x,而是写成更有意义的函数调用s=area(x),而且函数area本身只需要些一次,就可以多次调用
抽象是数学中非常常见的概念,举个例子
计算数列的和,比如1+2+3+.....+100,写起来十分不方便,于是数学家发明了求和符号Σ,可以把1+2+3+...100叫作:
这种抽象记法非常强大,因为我们看到Σ就可以理解成求和,而不是还原成低级的加法运算
写计算机程序也是一样,函数就是最基本的一种代码抽象的方式
函数最重要的目的是方便我们重复调用相同的一段程序
Python不但能非常灵活地定义函数,而且本身内置了很多有用的函数,可以直接调用
函数的定义
在python中,定义一个函数要使用def语句,依次写出函数名,括号,括号中的参数和冒号,然后在缩写块中编写函数体,函数的返回值用return语句返回
例如:
我们以自定义一个求绝对值的Numbers函数为例
#!/usr/bin/env python # -*- coding:utf-8 -*- def Numbers(x): if x>=0: return x else return -x #此函数的功能是求两个数的平方和 #首先def,这个关键字通知python,我要定义一个函数,Numbers是函数名,括号中的x的函数的参数,是对函数的输入 #参数可以一个或多个,也可以完全没有,但是括号要保留 if x>=0: #表示这一句判断x的大小,从而运算那个语句 else: #如果if后条件为假执行这一语句 return x #返回c的值,也就是输出的功能,python的函数允许无返回值,也就是不用return return a,b,c #相当于return (a,b,c)
函数体内部的语句在执行时,一旦执行到return语句时,函数就执行完毕,并将结果返回
如果没有return语句,函数执行完毕后也会返回结果,只是结果为None,Return None可以简写成return
在python中,当程序执行到return的时候,程序就停止执行函数内余下的语句
None是python中的一个特别的数据类型,用来表示什么都没有,相当于c语言的NULL,NOne多用于关键字参数传递的默认值
函数的调用
要调用一个函数,需要知道函数的名称和参数,比如求绝对值的函数abs。它接收一个参数
可以直接从python的官方网站查看文档:
http://docs.python.org/2/library/function.html#abs
也可以在交互命令行通过help(abs)查看abs函数的帮助信息
函数的返回值
返回单值
#!/usr/bin/env python # -*- coding:utf-8 -*- def Numbers(x): if x>=0: print(x) else: print(-x) Numbers(-5)
返回多值
math包提供了sin()和cos()函数,我们先用import引用它
#!/usr/bin/env python # -*- coding:utf-8 -*- import math def Move(x,y,step,angle): xx=x+step*math.cos(angle) yy=y-step*math.sin(angle) return xx,yy x,y=Move(100,100,60,math.pi/6) print x,y 打印 151.961524227 70.0
其实这是一种假象,python函数返回的仍然是单一值
#!/usr/bin/env python # -*- coding:utf-8 -*- import math def Move(x,y,step,angle): xx=x+step*math.cos(angle) yy=y-step*math.sin(angle) return xx,yy print(Move(100,100,60,math.pi/6)) #打印 (151.96152422706632, 70.0)
用print打印返回结果,原来返回值是一个tuple
注:在语法上,返回一个tuple可以省略括号,而多个变量可以同时接受一个tuple,按位置赋给对应的值,所以python函数返回多值其实就是返回一个tuple,但写起来更方便