标签:style blog class code java c
本章的主题是Python中的数字,这里详细介绍每一种数字类型,它们适用的各种运算符,以及用于处理数字的内建函数。在本章的末尾简单介绍了几个标准库中用于处理数字的模块。
1 数字类型
数字:标量贮存,可直接访问。值不可更改,更新数字的值其实是生成了一个新的对象。
创建数字对象:赋值的时候就已经创建。
更新数字对象:给变量赋新值时,其实是创建了一个新的对象,并将其引用赋值给变量。原对象引用计数减1。
删除数字对象:无法真正删除对象,只能用del语句删除对象的这个引用(变量名),之后不能使用这个引用。原对象引用计数减1。
2 整型
2.1 布尔型
只有两个值,True和False。进行数值运算时,True为1,False为0。
>>> True + 1 2 >>> False * 1.1 0.0
2.2 标准整数类型
等价于C语言的有符号长整型,一般以十进制表示,同时也支持八进制(数字0开头)和十六进制(0x或0X开头)表示。
2.3 长整型
与C语言的long不同,Python的长整型可以表达很大的值,只受限于系统虚拟内存。在数字后面加 L 或者 l(字母L大小写,推荐大写)即表示长整型。
2.4 整型和长整型的统一
目前整型和长整型正在逐步缓慢统一,只有对长整型调用repr()才会显示L,str()不显示。
>>> aLong = 999999999l >>> aLong 999999999L >>> print aLong 999999999
超出整型范围的,会自动转换为长整型:
>>> 1 << 20 1048576 >>> 1 << 32 #自动转换为长整型 4294967296L
调用C的人仍然要区分这两种整型。
3 双精度浮点数
Python的浮点数类似于C语言的double,遵循IEEE754规范,即 1b符号位+11b指数位+52b尾数部分。
浮点数的表示通常有一个小数点和一个可选的后缀 E或 e(大小写E,科学计数):
>>> .123 #只有小数点 0.123 >>> 12. 12.0 >>> 1.e1 10.0 >>> .5E-1 0.05
>>> float(12) #工厂函数
12.0
4 复数
复数由实数部分和虚数部分组成,实数部分和虚数部分都是浮点数,虚数部分必须有后缀 J或 j(大小写字母J)。虚部不能单独存在,如果没有列出实部,则默认为0.0。
复数对象有数据属性real(实部)和imag(虚部),还有conjugate()方法返回其共轭复数对象。
>>> a = 1j #实部默认为0.0 >>> a.real 0.0 >>> a = 2 + 3j >>> a (2+3j) >>> a.real #实部 2.0 >>> a.imag #虚部 3.0 >>> a.conjugate() #共轭复数 (2-3j)
5 运算符
5.1 复合模式运算符
其实就是自动类型转换,转换等级从高到低为 复数 > 浮点数 > 长整数 > 整数。内建函数帮助实现这种转换:
>>> 1.0 + (2 + 3j) #浮点数转换为复数后再相加 (3+3j) >>> coerce(123L, 0.4) #指出长整型应该转换为浮点数 (123.0, 0.4)
5.2 标准类型运算符
比较运算符(比如 >、==、!=等)和逻辑运算符(not、and、or)都可用于数值类型,运算之前同样会进行类型转换。
5.3 算数运算符
单目运算符:正号+、负号-
双目运算符:加法+、减法-、乘法*、除法/、地板除//、取余%、幂运算**
以上运算符中需要点明的几个特点:
>>> 1/2 #Python3.0以前的整数除法为地板除 0 >>> from __future__ import division #执行该指令使用未来版本Python >>> 1/2 0.5 $ python -Qnew #进入交互解释器时设置Qdivision_style启动参数 >>> 1/2 0.5 >>> -1 // 2 #负数地板除,返回比-0.5小的最大整数 -1 >>> 10.2 % 0.2 #浮点数求余x/y,返回 x - (math.floor(x/y) * y),即10.2 - (math.floor(5.1) * 0.2) = 10.2 - 10.0 = 0.2 0.19999999... #0.2,浮点数不会精确表示 >>> (10.2 + 0.4j) % 0.2 #复数求余类似于浮点数,但是只在实部进行 0.199999993+0.4j >>> -3 ** 2 #幂运算符优先级高于左侧符号位 -9
5.4 位运算符,只适用于整数
标准位运算:取反(~),按位 与(&), 或(|) 及 异或(^) 及左移(<<)和右移(>>)。Python
这样处理位运算:
z 负数会被当成正数的 2 进制补码处理。
z 左移和右移 N 位等同于无溢出检查的2的N次幂运算: 2**N。
z 对长整数来说, 位运算符使用一种经修改的 2 进制补码形式,使得符号位可以无限的向左扩展。
取反(~)运算的优先级与数字单目运算符相同,
是所有位操作符中优先级最高的一个。 左移和右移运算的优先级次之,但低于加减法运算。与, 或, 异或 运算优先级最低。所有位运算符按优先级高低列在表 5.4
中。
Python核心编程--学习笔记--5--数字,布布扣,bubuko.com
标签:style blog class code java c
原文地址:http://www.cnblogs.com/qieerbushejinshikelou/p/3724301.html