转换工厂函数
所谓工厂函数就是指这些内建函数都是类对象, 当你调用它们时,实际上是创建了一个类实例。
表5.5 数值工厂函数总结
类(工厂函数) 操作
bool(obj) b 返回obj对象的布尔值,也就是
obj.__nonzero__()方法的返回值
int(obj, base=10) 返回一个字符串或数值对象的整数表示, 类似string.atoi();从Python 1.6起,引入了可选的进制参数。
long(obj, base=10) 返回一个字符或数据对象的长整数表示,类似string.atol(), 从Python1.6起,引入了可选的进制参数
float(obj) 返回一个字符串或数据对象的浮点数表示,类似string.atof()
complex(str) orcomplex(real, imag=0.0) 返回一个字符串的复数表示,或者根据给定的实数(及一个可选的虚数部分)生成一个复数对象。
a. 在 Python2.3 之前, 这些都是内建函数
b. Python2.2 中新增的内建函数,在Python2.3 中改变为工厂函数
功能函数
Python 有五个运算内建函数用于数值运算: abs(), coerce(), divmod(), pow(), pow()和 round()。
abs()返回给定参数的绝对值。如果参数是一个复数, 那么就返回math.sqrt(num.real2 +num.imag2)。
函数coerce(),尽管从技术上讲它是一个数据类型转换函数,不过它的行为更像一个运算。函数coerce()为程序员提供了不依赖Python 解释器, 而是自定义两个数值类型转换的方法。对一种新创建的数值类型来说, 这个特性非常有用。函数coerce()仅回一个包含类型转换完毕的两个数值元素的元组。
divmod()内建函数把除法和取余运算结合起来, 返回一个包含商和余数的元组。对整数来说, 它的返回值就是地板除和取余操作的结果。对浮点数来说, 返回的商部分是math.floor(num1/num2),对复数来说, 商部分是ath.floor((num1/num2).real)。
函数 pow() 和双星号 (**) 运算符都可以进行指数运算。不过二者的区别并不仅仅在于
一个是运算符,一个是内建函数。
在Python 1.5 之前,并没有 ** 运算符。内建函数pow()还接受第三个可选的参数,一个
余数参数。如果有这个参数的, pow() 先进行指数运算,然后将运算结果和第三个参数进行取
余运算。这个特性主要用于密码运算,并且比 pow(x,y) % z 性能更好, 这是因为这个函数的
实现类似于C 函数 pow(x,y,z)。
>>> pow(2,5)
32
>>>
>>> pow(5,2)
25
>>> pow(3.141592,2)
9.86960029446
>>>
>>> pow(1+1j, 3)
(-2+2j)
内建函数round()用于对浮点数进行四舍五入运算。它有一个可选的小数位数参数。如果
不提供小数位参数, 它返回与第一个参数最接近的整数(但仍然是浮点类型)。第二个参数告
诉round 函数将结果精确到小数点后指定位数.
值得注意的是 round() 函数是按四舍五入的规则进行取整。也就是round(0.5)得到1,round(-0.5)得到-1。猛一看 int(), round(), math.floor() 这几个函数好像做的是同一件事, 很容易将它们弄混,是不是?下面列出它们之间的不同之处: