blogs

07 函数_调用函数

函数

我们知道圆的面积计算公式为:$S =π r^2$

当我们知道半径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本身只需要写一次,就可以多次调用。

基本上所有的高级语言都支持函数,Python也不例外。Python不但能非常灵活地定义函数,而且本身内置了很多有用的函数,可以直接调用。

抽象

抽象是数学中非常常见的概念。

写计算机程序也是一样,函数就是最基本的一种代码抽象的方式。

调用函数

Python内置了很多有用的函数,我们可以直接调用。

要调用一个函数,需要知道函数的名称和参数,比如求绝对值的函数abs,只有一个参数。可以直接从Python的官方网站查看文档:http://docs.python.org/3/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                                 Traceback (most recent call last)

<ipython-input-4-e61b31f7455c> in <module>
----> 1 abs(1,2)


TypeError: abs() takes exactly one argument (2 given)

如果传入的参数数量是对的,但参数类型不能被函数所接受,也会报TypeError的错误,并且给出错误信息:str是错误的参数类型

abs('a')
---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

<ipython-input-5-f2001f88707b> in <module>
----> 1 abs('a')


TypeError: bad operand type for abs(): 'str'

max函数max()可以接收任意多个参数,并返回最大的那个:

max(1,2)
2
max(1,2,3,-1,-2,)
3

数据类型转换

Python内置的常用函数还包括数据类型转换函数,比如int()函数可以把其他数据类型转换为整数:

int('123')
123
int(12.2)
12
float('12.34')
12.34
str(123)
'123'
bool(1)
True
bool("")
False

函数名其实就是指向一个函数对象的引用,完全可以把函数名赋给一个变量,相当于给这个函数起了一个“别名”:

a = abs
a(-1)
1

练习

n1 = 255
n2 = 1000
hex(n1)
'0xff'
hex(n2)
'0x3e8'

小结