第五章 数字

来源:互联网 发布:刷排名软件 编辑:程序博客网 时间:2024/06/10 12:24

Python支持多种数字类型:整型、长整型、布尔型、双精度浮点型、十进制浮点型和复数

数字提供了标量贮存和直接访问,不可更改。(变更数字的值会生成新的对象)

给变量更新值的时候,并不是更改了对象(数字是不可更改的对象),而是新建了一个对象,将这个对象的值引用给变量

按照Python的法则,无法真正删除一个数值对象,仅仅是不再使用它。当然,你可以使用del来删除一个数值对象的应用。

Python的标准整型等价于C的(有符号)长整型。一般以十进制表示(八进制以数字“0”开始,十六进制以“0x”或“0X”开始)

Python的长整型能表达的数值取决于机器支持的(虚拟)内存大小有关。在整型后面加个L(大写小写都可以,当然现在几乎没有什么区别,除非你明确想要长整型),表示这个整型是长整型。(尽量使用L而不是l以免和1弄混,这里可以使用str()函数和repr()函数来读取,这样你就可以看到他们的区别)可以是十进制、八进制、十六进制。

关于Python中复数的几个概念:

  • 虚数不能单独存在,他们总是和一个值为0.0的实数部分一起来构成一个复数
  • 复数由实数部分和虚数部分构成
  • 表示虚数的语法:real+imagj
  • 实数部分和虚数部分都是浮点型
  • 虚数部分必须有后缀j或者J

复数的属性如下:

复数属性属 性描 述num.real该复数的实部num.imag该复数的虚部num.conjugate()返回该复数的共轭复数


两个数字类型相加的时候,Python会自动检查,如果两个操作数是同一种数据类型,没有必要进行类型转换,仅当两个操作数类型不一致时,Python才会去检查是否可以将其中一个转换成另外一个。转换过程遵守以下几个原则:

  • 如果有一个操作数是复数,另一个被转换为复数
  • 否则,如果有一个操作数是浮点型,另一个操作数被转换为浮点型
  • 否则,如果有一个操作数是长整型,另一个操作数被转换为长整型
  • 否则,必然都是普通整型,无需类型转换。

数字类型的转换是自动进行的,如果明确指定某种数据类型进行特殊转换的场合,Python提供了coerce()内建函数来实现。


传统除法:对整型的除法舍去了小数部分仅保留整数部分,对浮点型执行真正的除法。

可以执行from __future__ import division来让所有除法都返回真实的商

//:可以对所有数值类型只执行地板除(舍去小数部分仅保留整数部分)

算术操作符算术操作符功 能expr 1 ** expr 2表达式一的表达式二乘方+expr 1结果符号不变-expr 1对结果符号取负expr 1 * expr 2表达式一乘以表达式二expr 1/expr 2表达式一除以表达式二(传统除或者真正除)expr 1//expr 2表达式一地板除表达式二expr 1%expr 2表达式一对表达式二取余expr 1+expr 2表达式一加表达式二expr 1-expr 2表达式一减表达式二**高于单目操作符(可以加括号来改变)


Python整型支持标准位运算:

  • 负数会被当成正数的2进制补码处理
  • 左移或者右移N位等同于无溢出检查2的N次幂运算
  • 对长整型来说,位操作符使用一种经修改的2进制补码形式,使得符号位可以无限向左扩展
  • 取反等同于数字单目操作符优先级(所有位操作符中优先级最高)。左移和右移优先级次之,但低于加减法。与、或、异最低。

位操作符功 能~num对数的每一位取反。结果为-(num+1)num1<<num2num1左移num2位num1>>num2num1右移num2位num1&num2num1与num2按位与num1^num2num1异或num2num1|num2num1与num2按位或


工厂函数:bool(obj)、int(obj,base=10)(直接截取小数部分)、long(obj,base=10)、float(obi)、complex(str) or complex(real,inag=0.0)

数值运算内建函数函 数功 能abs(num)返回num的绝对值coerce(num1,num2)将num1和num2转化为同一类型,然后以元组的形式返回floor(num)得到最接近num但小于num的整型(返回浮点型)divmod(num1,num2)返回元组(num1/num2,num1%num2)pow(num1,num2,mod=1)取num1的num2次方,提供mod参数后,计算结果再对mod取余round(flt,ndig=1)接受浮点型flt并四舍五入,保存ndig位小数,ndig默认为0


仅适用于整型的内建函数函 数操 作hex(num)将数字转换成十六进制并以字符串返回oct(num)将数字转换成八进制并以字符串返回chr(num)将ASCII值的数字转换为ASCII字符(0<=num<=255)ord(chr)接受一个ASCII或Unicode字符,返回对应值unichr(num)接受Unicode码值返回对应字符


布尔类型主要概念:

  • 有两个永不改变的值True或False
  • 布尔型是整型的子类,但是不能再被继承而生成它的子类
  • 没有__nonzero__()方法的对象的默认值是True
  • 对于值为零的任何数字或空集(空列表、空元组、空字典等),在Python中布尔值都是False
  • 对于数学运算,True=1,False=0
  • True和False等同关键字,请不要随意修改。

数字类型相关模块模 块介 绍decimal十进制浮点运算类Decimalarray高效数值数组(字符、整型、浮点型等)math/cmath标准C库数学运算函数。常规数学在math模块,复数运算在cmath模块operator数字操作符的函数实现random多种伪随机数生成器

random常用函数randint()两个整型参数,返回二者间随机整型randrange()接受和range()函数一样的参数,随机返回range([start,]stop[,step])结果的一项uniform()几乎和randint()一样,不过返回二者间的浮点型random()类似uniform(),不过下限恒等0.0,上限恒等1.0choice随机返回给定序列的一个元素



原创粉丝点击