1. 函数
我们知道圆的面积计算公式为:
S = πr²
当我们知道半径r的值时,就可以根据公式计算出面积。假设我们需要计算3个不同大小的圆的面积:
r1 = 12.34
r2 = 9.08
r3 = 73.1
s1 = 3.14 * r1 * r1
s2 = 3.14 * r2 * r2
s3 = 3.14 * r3 * r3
当代码出现有规律的重复的时候,你就需要当心了,每次写3.14 * x * x不仅很麻烦,而且,如果要把3.14改成3.14159265359的时候,得全部替换。
有了函数,我们就不再每次写s = 3.14 * x * x,而是写成更有意义的函数调用 s = area_of_circle(x),而函数 area_of_circle 本身只需要写一次,就可以多次调用。
抽象
是数学中非常常见的概念。举个例子:
计算数列的和,比如:1 + 2 + 3 + … + 100,写起来十分不方便,于是数学家发明了求和符号∑,可以把1 + 2 + 3 + … + 100记作:
100
∑n
n=1
这种抽象记法非常强大,因为我们看到∑就可以理解成求和,而不是还原成低级的加法运算。
而且,这种抽象记法是可扩展的,比如:
100
∑(n²+1)
n=1
还原成加法运算就变成了:
(1 x 1 + 1) + (2 x 2 + 1) + (3 x 3 + 1) + … + (100 x 100 + 1)
可见,借助抽象
,我们才能不关心底层的具体计算过程,而直接在更高的层次上思考问题。
写计算机程序也是一样,函数就是最基本的一种代码抽象
的方式。
Python不但能非常灵活地定义函数,而且本身内置了很多有用的函数,可以直接调用。
2. 函数调用
Python内置了很多有用的函数,我们可以直接调用。
要调用一个函数,需要知道函数的名称
和参数
,比如求绝对值
的函数 abs
,它接收一个参数。
可以直接从Python的官方网站查看文档
:
http://docs.python.org/2/library/functions.html#abs
也可以在交互式命令行通过 help(abs)
查看abs函数的帮助信息。
调用 abs
函数:
>>> abs(100)
100
>>> abs(-20)
20
>>> abs(12.34)
12.34
调用函数的时候,如果传入的参数数量
不对,会报TypeError
的错误,并且Python会明确地告诉你:abs()有且仅有1个参数,但给出了两个:
>>> abs(1, 2)
TypeError: abs() takes exactly one argument (2 given)
如果传入的参数数量是对的,但参数类型
不能被函数所接受,也会报TypeError
的错误,并且给出错误信息:str是错误的参数类型:
>>> abs('a')
TypeError: bad operand