2.7 函数:功能

将一条或数条语句按照一定的流程组合在一起并进行封装就构成了函数,函数可实现特定功能,提供给程序调用。在2.6节中,我们已经接触了两个基本函数print和input(早在前面内容中就应称之为函数,碍于书中介绍的顺序,暂时去掉了“函数”两字),它们的功能已经有过介绍,本节中不赘述。但需要在此强调的是,它们是内置函数,这些函数无须引用或者声明即可直接使用。下面将介绍几个在数学运算中经常使用,在人工智能程序中也经常需要调用的内置函数。当然,你也可以编写自己定义的函数。

回想一下在2.3节中介绍的求幂运算,在本节可以通过调用函数pow(base,exp)来进行求幂运算,其中base代表底数,exp代表指数(不必过于纠结函数中base与exp的含义,因为在第6章中会详细讲述),结果如图2-14所示。其结果与求幂运算表达式结果一致。对于将Python当作入门语言学习的读者会认为多此一举,都使用表达式计算不就可以了吗,为什么还要编写pow函数呢?这是因为在规模较大的程序中使用函数会使得代码更加简洁,可读性更高。与此同时,调用这种内置函数不会造成程序性能的降低。

图2-14 调用pow函数求幂

需要介绍的是,pow函数的括号中的2和4是函数的参数。更进一步地,base=2,exp=4。在此定义它们为实参。请注意,第6章之前涉及的其他函数将不介绍函数的参数,一个原因是还没有正式学习函数,另一个原因是第6章之前的函数都较为简单,在不介绍其参数含义的情况下也能知晓其含义。

对于图2-6中的第二个表达式,如果想令其为正数,可以使用绝对值函数abs。对于图2-3中的计算结果,如果想取整数,可以使用取整函数round。调用abs函数求绝对值和round函数取整示例如图2-15所示。

图2-15 调用abs函数求绝对值和round函数取整示例

请注意,round函数用于取整,即取接近计算结果的整数,对于两侧一样接近计算结果的整数,round函数总是取偶数。然而,在实际生活中,有些时候总是需要向下取整,比如购买一个大件商品,价格为1688.98元,在付费的时候卖家通常会让买家取整付费,即付费1688元。在其他编程语言中,可以直接调用相应的函数,比如MATLAB中的floor函数。在Python中同样提供了实现这个功能的函数,其名称也为floor,然而不能直接调用floor函数,因为它位于模块中(在2.8节中将介绍模块)。它更像C语言的库函数,在调用之前需要进行声明。