内建函数VS工厂函数

转换工厂函数

       所谓工厂函数就是指这些内建函数都是类对象, 当你调用它们时,实际上是创建了一个类实例。

      表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() 这几个函数好像做的是同一件事, 很容易将它们弄混,是不是?下面列出它们之间的不同之处:

     

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值