Chinaunix首页 | 论坛 | 博客
  • 博客访问: 253501
  • 博文数量: 44
  • 博客积分: 1052
  • 博客等级: 少尉
  • 技术积分: 742
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-17 16:51
文章分类

全部博文(44)

文章存档

2013年(7)

2012年(14)

2011年(23)

分类: Python/Ruby

2011-02-18 22:47:45

     从第四章介绍对象后,后面就开始介绍数值类型,字符串,列表,元组,字典。这一章是数值类型。
    
     数值类型是:标量存储,不可变,直接访问。
     python支持的数值类型有:标准整型,长整型,布尔型,双精度浮点型,和复数。

     a = 42      # 创建数值对象。
     a += 2     # 更新数值对象。  事实上这样是生成了一个新的数值对象44, 原来的42会被python自动回收。
     del a         # 删除对象的引用。 你自己不能将数值对象42给删除,对象42所占的内存有python自动回收。

     整型:布尔型,标准整型,长整型。
     布尔型:布尔型只有两个值True和False。布尔型是标准整型的子类,而且不能再被继承。没有__nonzero__()方法的对象的默认值为True。在数值运算时,True和False分别为1和0。注意目前True和False都不是关键字。别犯类似于下面的错误:
                          >>>True = 0
                          >>>bool(True)
                                  False
     标准整型:在32位机器上其取值范围是:-2^31 ~ 2^31 - 1.
     长整型:与C语言中长整型不同,这里的长整型能表示的数值大小与机器的内存大小有关。 123L(后面加上L表示是长整型)。
     双精度浮点型:相当于C语言中的double类型。
     
     复数:由实数部分和虚数部分共同组成表示,实数部分和虚数部分都是浮点型,虚数部分必须有后缀j或J。4j,2.3+7.3j,1.23e-045+6.7e+089j都是复数。复数的几个内建属性,如num为复数,则num.real为复数的实部,num.imag为复数的虚部,num.conjugate()返回该复数的共轭。

     有关类型转换的规则:
          如果有一个数为复数,另一个操作数也转换为复数,
          否则,如果有一个数为浮点数,另一个操作数也转换为浮点数,
          否则,如果有一个数为长整型,另一个操作数也转换为长整型,
          否则,必都未整型,无需转换。
     python提供内建函数coerce()来实现这种转换,下面再叙。

     操作符(第4章说了关系操作符,逻辑操作符):

     算数操作符:+,-,*,/,%,//,**。 加,减和乘不再多说。
     关于除法:不加参数打开python时,默认的参数为-Qold,说明执行传统的除法行为,传统的除法行为即:1/2的结果为0(和C语言中的整数除法相同)。如果使用-Qnew参数或者使用了from __future__ import division语句,则采用新的除法方式,即:1/2的结果为0.5, 就是数学里计算时的除法。也可以使用//来进行除法,称为地板除,不管操作数是整型还是浮点型,该除法都舍去小数部分,返回的数字为比真正的商小的最接近的数字,即-1//2的结果为-1。
     取余(%):整数的取余易理解。对于浮点数的取余的计算方法是:x%y == x-(math.floor(x/y)*y)。对复数的取余的计算方式是: x%y == x-(math.floor((x/y).real)*y)。
     幂运算(**):**就表示求幂,3**2 == 9。 注意:**运算符的优先级高于左侧的-,低于右侧的-。
                          即:-3**2 == -9, 4**-1 == 0.25

     位操作符(仅适用于整型,~,<<,>>,&,^,|)按括号中的从左到右为优先级从高到低。
     ~num == -(num+1) : 即~30 == -31
     
     python中针对数值类型的内建函数(分为两类:用于数值类型转换的函数,用于运算的函数)
     (1) 转换工厂函数:
          bool(obj):返回obj的布尔值,即obj.__nonzero__()方法的返回值。
          int(obj, base=10):返回一个字符串或数值对象的整型表示,base为可选的进制参数。不能转换复数为整型。转换浮点数时,是直接截去后面的小数部分。
          long(obj, base=10):转换为长整型。
          float(obj):转换为浮点型。
          complex(str) or complex(real, imag=0.0):返回一个复数对象。
     (2) 功能函数:
          abs(num):返回num的绝对值,对于复数是返回其模。
          coerce(num1, num2):将num1, num2转换为同一种类型(根据上面的类型转换规则),然后以元组形式返回它们。
          divmod(num1, num2):返回一个包含商和余数的元组,
                                                 对于整型返回(num1//num2, num1%num2),
                                                 对于浮点型返回(math.floor(num1/num2), num1%num2),
                                                 对于复数返回(math.floor((num1/num2).real), num1%num2)。
                                                 num1%num2按照取余操作符的计算规则计算。
          pow(num1, num2, mod=1):等价于(num1 ** num2) % mod
          round(flt, ndig=0):对flt进行四舍五入,ndig指明保留的小数位个数,默认为0。返回值类型为浮点型。
          math.floor(num):返回的值为小于或等于num的最大的整型值。但返回值类型仍为浮点型。
     (3) 仅能作用于整型的几个函数:
          hex(num):将num转换为十六进制字符串
          oct(num):将num转换为八进制字符串
          chr(num):将ASCII值的数值转换为对应的ASCII字符,0<=num<=255, 不在此范围则错误。
          ord(char):接受一个长度为1的字符串,获得相应的ASCII值或unicode值
          unichr(num):接受一个unicode值,返回相应的unicode字符。


python中与数值类型运算相关的模块有:decimal,array,math/cmath,operator,random。具体可以查阅python标准库手册。
阅读(2089) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~