1.5 Python中的内置函数

为了方便程序员快速编写Python脚本程序,Python提供了很多好用的功能模块,它们内置于Python系统,也称为内置函数(Built-in Functions,BIF)。

比如,前面我们多次用到的print(),它就是一个内置函数,其功能是把信息输出到标准输出设备上(通常是计算机屏幕)。在【范例1-1】中,第03行的input()也是一个内置函数,其功能是接受用户从标准输入设备(通常指键盘)中输入的内容。

同样,同一行的int()也是一个内置函数,它的功能是把输入内容强制转换为整型(int)。比如我们用键盘输入“92”,对于input()函数而言,它采集到的是一个由“9”和“2”构成的字符串。我们可以通过在IPython控制台输入如下语句来测试启动IPython的方法有很多。第一种方法是先启动Spyder,在界面右下角的区域就是IPython控制台,如图1-10所示。第二种方法是,在命令行输入ipython指令,启动单独IPython控制台,此时类似于IDLE。对于Windows系统,在Anaconda菜单里有专门的图标可供选择。

Python自带的开发环境IDLE通常以“>>>”作为输入的提示符,而IPython则使用了更加有信息量的输入In [n]和输出Out [n]标识,来提示输入指令的编号,这里的n会随着输入指令的增加而不断变化,如同“>>>”不是代码的一部分一样,这些编号也不是Python指令的一部分,它们仅作为提示信息而存在。

在上述代码的第1个输入语句中,temp是一个临时变量。在Python中,使用变量前不需要声明,直接给变量赋合法的值,变量会根据等号(=)右侧的类型,自动完成类型同步。

在上述代码的第3个输入语句中,我们利用另外一个内置函数type()查询了变量temp的类型,从输出结果可以看出,它是一个字符串(str)类型。字符串类型的变量是不便于进行大小比较的,通常需要转换为可比较的数值型(如整数和浮点数)。如果想把字符串“92”转变为整数“92”,就要用到前面的提到的内置函数int(),代码如下。

上面第4个输入语句,使用num接收由内置函数int()根据字符对象temp生成的对应整型(int)对象。第5个输入语句再次利用内置函数type()来查询num类型,反馈的结果是整型需要说明的是,对于Python而言,一切皆对象。temp本身依然是str对象,并没有随着int()函数的作用而发生变化。int()函数利用temp作为“原材料”,重新生成了新对象num,而num是一个整型对象。

那Python到底提供了多少内置函数呢?我们可以在IPython(或IDLE)的控制台中输入dir(__builtins__)注意,单词builtins左右两侧分别是两个下画线。以双下画线开头和结尾的变量、常量或函数,是Python内部的专有标识,如__builtins__表示内置函数集合,而__init__()代表类的构造函数。来查看所有的内置函数(常见的内置函数及功能如图1-12所示)。

图1-12 常见的内置函数及功能

如同我们没有必要记住整本字典再去读书一样,我们也没有必要记住所有的内置函数及其用法再去编程。我们只需要知道它们的存在,然后在用到的时候,利用help()来查询对应的使用方法就可以了。例如,当我们想查询type()的使用方法时,可以在IPython的控制台输入如下指令。

需要注意的是,作为内置函数help()的参数,我们仅需提供函数名称,而不需要函数后面的一对括号,例如我们想查询type()函数的用法,正确的查询格式是help(type),而不是help( type() )。

对于内置函数,诸如IPython之类的代码编辑器,提供了很好的自动补全功能。也就是说,当我们输入内置函数,或已经在内存中存在的变量名时,只需输入部分字符(例如print()函数的前两个字符pr)并按下Tab键,系统就会给出合理的选项,然后我们利用键盘的上(↑)下(↓)方向键,选择正确的输入即可,如图1-13所示。如果输入的提示字符足够多,则后面的备选项就越少。例如,输入“pri”并按下Tab键就会直接补充为“print”,这大大提高了代码输入的效率。

图1-13 按下Tab键自动补全