Python核心编程--学习笔记--5--数字

  本章的主题是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
中。

时间: 2024-12-30 04:11:56

Python核心编程--学习笔记--5--数字的相关文章

python核心编程学习记录之数字

仅用于整数的操作

python核心编程学习记录之映射和集合类型

字典是python里唯一的映射类型

《Python核心编程》笔记 Python对象

第4章 Python对象 1.Python对象 Python使用对象模型来存储数据,构造任何类型的值都是一个对象.所有的对象都有三个特性: 身份,可通过内建函数id()查看,这个值即该对象的内存地址. 类型,可通过内建函数type()查看. 值,对象表示的数据项. >>> p = 12 >>> id(p) 31108092 >>> type(p) <type 'int'> >>> p 12 >>> 2.标

《python核心编程》笔记

创建文件(makeTextFile.py)脚本提醒用户输入一个尚不存在的文件名,然后由用户输入文件每一行,最后将所有文本写入文本文件 1 #!/usr/bin/env python 2 3 'makeTextFile.py -- creat text file' 4 5 import os 6 ls = os.linesep 7 8 # get file name 9 while True: 10 if os.path.exists(fname): #不存在返False,存在返True 11 p

《python核心编程》笔记——系统限制

输出当前系统关于数字的范围 1 import sys 2 l = {} 3 maxint = sys.maxint 4 minint = -maxint 5 6 maxlong = sys.maxsize 7 minlong = -maxlong 8 9 maxfloat = sys.float_info.max 10 minfloat = sys.float_info.min 11 12

《python核心编程》笔记——杂项

python语句默认会给每一行添加一个换行符,只要在最后加一个逗号就能改变这种行为 若函数里没有return就自动返回None对象 PEP(python增强提案简称)http://python.org/dev/peps dir()显示对象属性,如果没有参数,显示全局变量的名字 help()显示文档字符串,没有参数进入交互模式 type()返回对象类型,返回值本身是一个type对象 输入数值用input(),而不是raw_input() 当一个模块太大,驱动太多功能,应该考虑拆一些代码出来外键另一

python核心编程学习记录之错误与异常

python核心编程学习记录之面向对象编程

未完待续

python核心编程学习记录之多线程编程