一. 数字常量

1. 下面来看看Python的数字常量中都要哪些类型:

数字 常量
129,-89,0 一般整数
9999848499999L,4594646469l 长整型数(无限大小)
1.232,3.14e-10,4E203,3.0e+210 浮点数
0177,x9ff,0XFF 整数的八进制和十六进制数
2+5j,2.0+6.0j,3J 复数常量

这里需要注意的是:如果整数常量以l或L结尾,那么它就变成了Python的长整型数。当一个整数的值超过32位时,它会自动变换为长整型数,不需要自己输入字母L。八进制数以数字0开头,后面接数字0-7构成的字符串。十六进制数以0x或0X开头,后面接十六进制的数字0-9和A-F。十六进制中的字符是不区分大小写的!

2. 内置数学工具和扩展(用于处理数字对象的工具)

 (1)操作符如下表所示:

注意:在Python的新版本中x<>y的用法已经被取消,目前只能用x!=y

 (2)操作符的优先级

  在上图中越靠后的操作符优先级越高。

 (3)混合类型的数字运算时自动升级

  意思就是,当两个不同类型的数字进行运算时,Python首先会将被操作的对象转换成其中最复杂的操作对象,然后在进行同类型的对象运算。因此,Python有划分数字类型复杂度的准则:整型<长整型<浮点数<复数

注意:整数和浮点数的除法运算是不一样的,例子如下:

 

 (4)除法:传统除法,Floor除法,真除法

  ①X / Y 传统除法,在Python2.7版本中后之前的版本中,这个除法对整数相除得到的结果会省去小数部分,对于浮点数会保留小数部分。但是在3.0版本之后就变成了真除法(无论任何类型都会保留小数部分)

 

   

  ②X // Y Floor除法,不考虑操作对象的类型,总会省略结果的小数部分。不论是2.0版本还是3.0版本

3. 位操作

 Python的另一个特点是,也支持像C语言中的大多数数学表达式,比如实现位移和布尔操作等。

 

 上面的二进制1左移了两位,成为二进制4,由0001---->0100

4. 长整型数  在Python中,一个长整型数可以任意大

5. 八进制和十六进制数   Python中有一些内置函数支持十进制与八进制和十六进制之间的相互转换

 oct()函数:十进制---->八进制

 hex()函数:十进制---->十六进制  

 int()函数:可以将一个数字字符串(指八进制或十六进制数)转化为整数。int('0100') -->100,int('0100', 8) -->64,int('0x40', 16) -->64

6. 常用的数学工具:math模块,random模块,内置函数int(),round()等。这里需要注意的是:在使用之前,模块必须导入,内置函数不用。

7. 小数数字 小数对象跟浮点数不同,但是有共同之处:都有固定的精度。然而浮点数对象的数学运算在精度方面有缺陷,比如当计算0.1+0.1+01-0.3的时候,结果应该为0,然而并不是:

 

 对于小数对象可以更正结果:

 

 另外decimal中context对象可以设置小数精度:

 

8. 布尔型

 在Python中布尔型比较特殊,首先它的值为True 和 False。 注意这里的首字母必须大写,不然会报错!!这是区别于其他语言的地方。并且在Python中True 可以作为数字1参与数学运算。

 

9. 动态类型介绍

 在执行a = 3 这行程序时,我们并没有声明变量的类型,Python内部都做了什么工作呢?

 (1) 创建一个对象来代表值3

 (2) 创建一个变量a,如果它还没有被创建的话

 (3) 将变量与新的对象相连接

 

 通过上图可以看出变量和对象是保存在内存中的不同部分,并通过连接相关联。变量总是连接到对象,绝对不会连接到其他变量上。在内部事实上是到对象内存空间的一个指针,在Python中从变量到对象的连接称作引用。即引用是一种关系,以内存中的指针的形式实现。一旦变量被使用,Python自动跟随这个变量到对象的连接。

 (4) 对象的垃圾收集

  每当一个变量名被赋予了一个新的对象,之前的对象占用的空间就会被回收(如果它没有被其他的变量名或对象引用的话)。这种自动回收对象空间的技术称作垃圾收集。当变量被赋予一个新的对象时,它的前一个对象的空间会被回收,并且对象的空间自动放入自由内存空间池,等待后来的对象使用。

 (5) 共享引用

 

 这里变量a和b都引用了相同的对象(也就是说,指向了相同的内存空间)。在Python中称作共享引用。

 下面看这个引用:

 

 这个引用结构如下:

 

 看下面的赋值语句:

 

 注意一点,对象的引用值在此过程中逐个丢弃,每一次x被赋值给一个新的对象,Python都回收了对象的空间,在Python内部,通过保持用每个对象中的计数器记录引用 到这个对象上的 次数来完成这一功能。一旦这个计数器被设置为零,这个对象的内存空间就会自动回收。像上图中的赋值过程,每次x被赋值给一个新的对象,前一个对象的引用计数器变为零,导致它的空间被回收。

 (6) 共享引用和在原处修改

  所谓在原处修改,是指具有可变性的数据对象,比如列表。下面看这样的操作:

  

  修改L1的第一个元素,对L1对象产生了影响,L2和L1引用的是同一对象,因此L2也发生了变化。那么怎么才能在修改L1的时候,不对L2产生影响呢?这就用到了Python的拷贝对象,而不是创建引用。能进行拷贝的方法很多,比如copy模块,内置列表函数(分片操作)。分片是最常用的.

  

 (7) 共享引用和相等

  在Python中,对于小的整数和小的字符串,可能并没有被回收;相反的,它将可能被保存在一个系统表中(缓存机制)。由于Python的引用模型,在Python中有两种不同的方法判断是否相等:

  ① == 操作符: 测试两个被引用的对象是否具有相同的值;

  ② is 操作符:检查两个变量是否指向同一个对象。如果相同,返回True,否则False。实质上is是比较实现引用的指针。

  举例如下:

  

  再看小的数字的情况:

   

  为什么这里的is的结果是True呢?因为小的数字和字符串被缓存和复用了!

   注意:Python中提供了可以查询对象被引用次数的函数:sys.getrefcount(对象名)

  

Python数据类型深入学习之数字的更多相关文章

  1. python数据类型之Number(数字)

    一.Number(数字) 关注公众号"轻松学编程"了解更多. 数据类型 ​ 为什么会有不同的数据类型? ​ 计算机是用来做数学计算的机器,因此它可以处理各种数值,但是计算机能够处理 ...

  2. Python数据类型深入学习之字符串

    一. Python字符串 1. 下面来看一下python中常见字符串常量和表达式: Python中用来编写字符串的方法有以下几种: (1) 单引号:'speade' (2) 双引号:"spe ...

  3. python数据类型分类以及运算类型

    一.python数据类型 目录: 1.数字(整数.小数) 2.字符串(单引号.双引号.三引号) 3.元组 #元素确定之后不能修改 4.列表 #元素可以修改 5.集合  #不讲顺序,得到的结果没有重复元 ...

  4. Python学习笔记(五)--Python数据类型-数字及字符串

    Python数据类型:123和'123'一样吗?>>> 123=='123'False>>> type(123)<type 'int'>>> ...

  5. PYTHON 100days学习笔记007-2:python数据类型补充(2)

    目录 day007:python数据类型补充(2) 1.Python3 元组 1.1 访问元组 1.2 删除元组 1.3 元组运算符 1.4 元组索引,截取 1.5 元组内置函数 2.python3 ...

  6. PYTHON 100days学习笔记007-1:python数据类型补充(1)

    目录 day007:python数据类型补充(1) 1.数字Number 1.1 Python 数字类型转换 1.2 Python 数字运算 1.3 数学函数 1.4 随机数函数 1.5 三角函数 1 ...

  7. 【转】Python数据类型之“数字(numerics)”

    [转]Python数据类型之“数字(numerics)” 上一节内容说的是“Python基本语法”,本节主要讲下Python中的数据类型. 存储在内存中的数据通常有两个属性: 在内存中的存放位置:这个 ...

  8. Python数据类型(数字)

    文章内容参考了教程:http://www.runoob.com/python/python-basic-syntax.html#commentform Python 变量类型 变量存储在内存中的值.这 ...

  9. python3笔记八:python数据类型-Number数字

    一:学习内容 数字类型分类:整数.浮点数.复数.布尔值 数字类型转换 数字类型的数学功能:abs().max().min().pow().round().math函数.random函数 二:数字类型分 ...

随机推荐

  1. OC仿支付宝输入UITextField输入车牌号

    效果图,如果使用,出现任何问题请告知,或者下方留言,我好以及改正 .h文件: #import <UIKit/UIKit.h> @interface LicenseKeyBoardView ...

  2. LVS集群简介及使用

    什么是集群 一组通过高速网络互联的计算组,并以单一系统的模式加以管理 将很多服务器集中在一起,提供一种服务,在客户端看来就象是只有一个服务器 可以在付出较低成本的情况下获得在性能,可靠性,灵活性方面的 ...

  3. 可快速生成增删curd改查功能的插件

    仿造Django中的admin自己实现增删改查.模糊搜索.批量操作.条件筛选.popup功能的插件 1.创建组件 首先创建一个app,这里取名为stark,在settings.py中将其进行注册 IN ...

  4. Redis入门到高可用(七)——Hash

    一.结构 Mapmap结构: filed 不能相同,value可以相同. 二.重要指令 ♦️ HSET  ♦️ HGET  ♦️ HDEL ♦️ Hlen  ♦️ HEXISTS ♦️HGETALL  ...

  5. springmvc aop 事务配置

    对应的中文: 任意公共方法的执行: execution(public * *(..)) 任何一个以“set”开始的方法的执行: execution(* set*(..)) AccountService ...

  6. 接口,定义接口的关键字是 interface 实现接口关键字是 implements

    当抽象类中的方法都是抽象的时候,这时可以将该抽象类用另一种形式定义和表示,就是接口interface特点:对于接口中常见的成员:而且这些成员都有固定的修饰符,不写就默认存在1:全局常量 :  都是 p ...

  7. Java 基础 面向对象之构造方法和关键字

    构造方法 构造方法简介 在开发中经常需要在创建对象的同时明确对象的属性值,比如员工入职公司就要明确他的姓名.年龄等属性信息. 那么,创建对象就要明确属性值,那怎么解决呢?也就是在创建对象的时候就要做的 ...

  8. 冒泡排序(Python实现)

    目录 1. while版本--冒泡排序 2. for版本--冒泡排序 3. 测试用例 4. 算法时间复杂度分析 1. while版本--冒泡排序 def bubble_sort_while(a_lis ...

  9. 使用JWT的RSA256加密做为用户认证, 测试性能

    http://www.giantflyingsaucer.com/blog/?p=5994 使用JWT的token认证,防止别人知道了接口后,随意调用,但是发现 stepping : 4 microc ...

  10. python浮窗

    import wx; app = wx.App(); win = wx.Frame(None,title="老穆视频",pos=(900,20),size=(300,60),sty ...