2.7 内置函数

内置函数在Python中可以直接使用。在这里将对常用的Python内置函数进行归纳总结。

2.7.1 数字相关的内置函数

1. 绝对值的计算:abs()函数

函数abs(x)返回数字x的绝对值,x可以是整数,长整数,浮点数;如果x是复数,则返回它的模:

2. 进制的转换:bin(),oct()和hex()函数

这些函数将整数转化为对应的二进制、八进制和十六进制的字符串:

In [3]: bin(255), oct(255), hex(255)

Out[3]: ('0b11111111', '0377', '0xff')

3. ASCII码与字符的转换:chr()和ord()函数

chr()函数可以将ASCII码数字转化为对应的字符,而ord()函数正好相反,它将单个字符转为对应的ASCII码数字:

对于Unicode字符,我们可以用unichr()和ord()函数进行相互转换。

4. 商和余数的计算:divmod()函数

函数divmod(a, b)返回一个元组。如果参数是整数,它返回(a // b, a % b),如果参数是浮点数,返回(q, a % b),其中q通常是a / b向下取整得到的结果,不过由于浮点数的精度问题,q有可能比真实值小1:

5. 幂的计算:pow()

求幂函数的用法为:

pow(x, y[, z])

在不给定z的情况下,函数返回x的y次方,相当于x ** y。给定参数z时,返回x的y次方模z的结果:

pow(x, y, z)要比使用pow(x, y) % z高效。

6. 近似值的计算:round()

近似函数的用法为:

round(num[, ndigits])

参数ndigits参数用来指定近似到小数点后几位,默认为0,即默认返回近似到整数的浮点数值:

round()函数规定,将数字5近似到离0更远的一边,所以:

round(0.5)=1.0

round(-0.5)=-1.0

不过,由于浮点数存储的精度问题,可能会出现round(2.675, 2)不等于2.68这样不符合规则设定的问题:

In [12]: round(2.675, 2)

Out[12]: 2.67

2.7.2 序列相关的内置函数

1. 序列的真假判断:all()、any()

函数all()接受一个序列,当序列中所有的元素都计算为真时,返回True,否则为False;而函数any()则在序列中的任意一个元素为真时返回True,否则为False。

判断真假的规则与判断语句中的判断条件一致:

2. 连续序列的生成:range()和xrange()

xrange()函数与range()函数的使用方法一致,只不过它生产的不是列表,而是一个xrange()对象:

当我们使用for循环时,range()函数会先产生一个临时列表,而xrange(n)则不会额外产生列表,能节约一定的时间和空间,提高效率。

3. 序列的迭代:enumerate()和zip()

enumerate()函数可以在迭代序列时输出序号和值:

我们还可以在函数中指定序号的开始值,比如enumerate(x, 1)表示计数从1开始。

zip()函数则可以将多个序列放在一起迭代:

4. 序列的最值:max()和min()

可以用max()函数和min()函数来求最值:

5. 序列的切片:slice()

我们在调用切片时使用了start:stop:step的形式。可以通过slice()函数来生成这样的一个slice对象,如“5:10:2”:

In [23]: slice(5, 10, 2)

Out[23]: slice(5, 10, 2)

但是不能直接使用“5:10:2”本身:

slice对象的作用与start:stop:step相同:

6. 序列的排序与逆序:sorted()与reversed()

sorted()函数和reversed()函数可以分别实现将列表排序和反序的过程。它们的返回值有所区别,排序函数sorted()返回的是一个列表;而反序函数reversed()返回的则是一个迭代器,我们将在之后介绍迭代器的内容:

7. 序列的和:sum()

sum()函数可以对序列进行求和:

In [29]: sum([1, 2, 3, 4])

Out[29]: 10

2.7.3 类型相关的内置函数

与基本类型的相关的内置函数主要有int、bool、long、float、set、dict、list、tuple、frozenset、file等,它们可以用来初始化一个实例,也可以配合函数isinstance()来判断一个对象是否为指定的类型: