一、数字类型分类

数字提供了标量存储和直接访问,它是不可更改类型,也就是说变更数字的值会产生新的对象。python的对象模型与常规对象模型有些不同,对数字对象的更新,实际上是生成了一个新的数值对象,并得到它的引用。

在学习编程的过程中,我们一直接受这样的教育:变量就像一个盒子,里面装着变量的值。在python中,变量更像一个指针指向装变量值的盒子。对于不可改变类型来说,你无法改变盒子的内容,但可以将指针指向一个新盒子。每次将另外的数字赋值给变量的时候,实际上是创建了一个新的对象,并将它赋值给变量。

按照python的规则,你无法真正删除一个数字对象,你仅仅是不再使用它而已。如果你确实想删除一个数值对象的引用,使用del语句即可。

1. 整型

整型的数字可以分为

  • 布尔型:布尔型其实是整型的子类型,布尔型数据只有两个取值:True和False,分别对应整型的1和0。每一个Python对象都天生具有布尔值(True或False),进而可用于布尔测试(如用在if、while中)。以下对象的布尔值都是False:NoneFalse(布尔型)、(整型0)、0L(长整型0)、0.0(浮点型0)、0.0+0.0j(复数0)、''(空字符串)、[](空列表)、()(空元组)、{}(空字典)、用户自定义的类实例,该类定义了方法 __nonzero__() 或 __len__(),并且这些方法返回0或False。除开上述对象之外的所有其他对象的布尔值都为True。
  • 标准整型:python标准整型类型等价于C的(有符号)长整型,取值的范围与系统的最大整型一致(如32位机器上的整型是32位,64位机器上的整型是64位),可以表示的整数范围在[-sys.maxint-1, sys.maxint]之间。整型字面值的表示方法有3种:十进制(常用)、八进制(以数字“0”开头)和十六进制(以“0x”或“0X”开头)。
  • 长整型:C或者其他编译型语言的长整形的取值范围是32位或者64位,python的长整型类型能表达的数值仅仅与你的机器支持的(虚拟)内存大小相关,python能表达无限大的整型。在一个整型后面加个L,表示这个整型是长整型。

2. 双精度浮点型

双精度浮点数:浮点型类似于C中的双精度浮点型(double),其精度信息和内部表示可以从sys.float_info中获得。浮点型字面值可以用十进制或科学计数法表示,在科学计数法中,e或E代表10,+(可以省略)或 - 表示指数的正负。

3. 复数

复数:复数的实部real和虚部imag都是浮点型。复数对象拥有数据属性,分别为该复数的实部和虚部,复数还拥有conjugate方法,返回该复数对象的共轭复数对象。

二、数字类型操作符

python使用数字类型强制转换的方法来解决数字类型不一致的问题,也就是强制将一个操作数转换为同另一个操作数相同的数据类型。但是这种操作不是随意进行的,它遵循以下的基本规则:

整型转换为浮点型,非复数转换为复数。类似coerce()函数的描述:

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

1. 算术操作符

除法

  1. 传统除法:如果是整型除法,舍去小数部分,返回一个整型(地板除),如果操作数之一是浮点数,执行真正的除法。
  2. 真正除法:除法运算总是返回真实的商,不管操作数是整型还是浮点型。要引入from __future__ import division指令。在真正除法中,地板除用新的操作符//,这个运算符除法不管操作数为何种数值类型,总是舍去小数部分。

幂运算

幂运算操作符比其左侧操作数的一元操作符优先级高,比其右侧操作数的一元操作符的优先级低。

>>> 3 ** 2
9
>>> -3 ** 2
-9
>>> (-3) ** 2
9
>>> 8 ** -2
0.015625

还需要注意的是:指数操作符的优先级高于连接实部和虚部的+号操作。

>>> 0 + 1j ** 2
(-1+0j)
>>> 1 + 1j ** 2
0j
>>> (1 + 1j) ** 2
2j

三、数字类型内建函数与工厂函数

1. 标准类型函数

前面介绍了cmp(),str(),type()内建函数,这些函数可以用于所有的标准类型。当然对于数字对象来说也是可以的。

2. 数字类型函数

python现在拥有一些针对数字类型的内建函数,他们是

转换工厂函数

函数int()、long()、float()、complex()和bool()用来将其他数值转换为相应的数值类型。其中bool()用来将整型值1和0,转换为标准布尔值True和False。所谓工厂函数就是指这些内建函数都是类对象,当你调用它们时,实际上创建了一个类实例。

功能函数

python有五个内建函数用于数值运算:abs()、coerce()、divmod()、pow()、round()。函数coerce()返回一个包含类型转换完毕的两个数值的元组,具体的转换规则,前面已经说过了。divmod()内建函数把除法和取余运算结合起来,返回一个包含商和余数的元组,这里的除法是地板除。pow()和双星号(**)操作符都可以进行指数运算。pow有第三个参数,功能类似pow(x, y) % z,但是pow的性能更好。

内建函数round用于对浮点数进行四舍五入,它有一个可选的小数位数参数,默认返回与第一个参数最接近的整数(但仍然是浮点数)。第二个参数告诉round函数将结果精确到小数点后指定位数。下面对比一下round()、int()、floor()这三个函数。

int()函数直接截去小数部分,返回值为整型。

floor()得到最接近原数但小于原数的整型,返回的是浮点数。

round()得到最接近原数的整型,返回的是浮点数。

3. 仅用于整型的函数

进制转换函数

oct()和hex()这两个函数都接受一个整型(任意进制的)对象,并返回一个对应值的字符串对象。

ASCII转换函数

函数chr()接受一个单字节整型值(0~255),返回一个字符串,其值为对应的字符。

函数ord()接受一个字符,返回其对应的整型值。

  

python学习笔记:python数字的更多相关文章

  1. Python学习笔记—Python基础1 介绍、发展史、安装、基本语法

    第一周学习笔记: 一.Python介绍      1.Python的创始人为吉多·范罗苏姆.1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言 ...

  2. python学习笔记-python程序运行

    小白初学python,写下自己的一些想法.大神请忽略. 安装python编辑器,并配置环境(见http://www.cnblogs.com/lynn-li/p/5885001.html中 python ...

  3. Python学习笔记--Python字符串连接方法总结

    声明: 这些总结的学习笔记,一部分是自己在工作学习中总结,一部分是收集网络中的知识点总结而成的,但不到原文链接.如果有侵权,请知会,多谢. python中有很多字符串连接方式,总结一下: 1)最原始的 ...

  4. Python学习笔记——Python Number(数字)

    Python Number 类型转换 int(x, y) #将x转换为一个整数,y为进制数.如 int('11',2)将二进制数的11转成十进制数的整数,结果为3 long(x, y) #将x转换为一 ...

  5. python学习笔记 ——python写的猜数字游戏 002

    from sys import exit import random def Arrfor(str): #CONTST = CONTST + 1 artificial = input("请输 ...

  6. python学习笔记-python解释器

    刚开始学习python,首先要了解一下python解释器. 什么是python解释器? 编写python代码保存后,我们会得到一个以.py为扩展名的文本文件.要运行此文件,就需要python解释器去执 ...

  7. [Python学习笔记][Python内置函数]

    Python 常用内建函数 比较基础的列表 abs(x) 求绝对值 pow(x,y) 返回x的y次方,等同于x**y round(x[,小数位数]) 对x进行四舍五入,若不指定位数,则返回整数 chr ...

  8. Python学习笔记(Ⅰ)——Python程序结构与基础语法

    作为微软的粉丝,最后终于向Python低头了,拖了两三个月终于下定决心学习Python了.不过由于之前受到C/C#等语言影响的思维定式,前期有些东西理解起来还是很费了些功夫的. 零.先抄书: 1.Py ...

  9. python学习笔记--python编程基础

    一.一个隆重的仪式 我们在学习语言的时候,第一个写的程序肯定都是hello world.来写第一个程序吧,其实很简单,python的语法就是简单.优雅,一个print就搞定. 1 print('hel ...

  10. python学习笔记--python数据类型

    一.整形和浮点型 整形也就是整数类型(int)的,在python3中都是int类型,没有什么long类型的,比如说存年龄.工资.成绩等等这样的数据就可以用int类型,有正整数.负整数和0,浮点型的也就 ...

随机推荐

  1. 整理js继承

    实现继承的方法: 一,原型链:利用原型让一个引用类型继承另一个引用类型的属性和方法 function SuperType(){ this.property=true; } SuperType.prot ...

  2. hadoop压缩配置

    为何要使用压缩,压缩可以是文件的大小减小很多,节省空间:另外压缩后的文件在传输时更节省带宽. 所需软件: 1)lzo 2)hadoop-lzo 3)maven 安装编译: 1)lzo wget htt ...

  3. 【Tika基础教程之一】Tika基础教程

    一.快速入门 1.Tika是一个用于文本解释的框架,其本身并不提供任何的库用于解释文本,而是调用各种各样的库,如POI,PDFBox等. 使用Tika,可以提取文件中的作者.标题.创建时间.正文等内容 ...

  4. AngularJS如何使用ngRepeat过滤排序

    NG重复指令,带过滤器,像这样: <li ng-repeat="item in items | orderBy:'order_prop' | filter:query | limitT ...

  5. HttpClient---------demo

    public class aa { public static void main(String[] args) { // 创建HttpClient实例 HttpClient httpclient = ...

  6. phonegap退出android程序

    最近用android做了一个程序,在点“后退”的时候,会不停地后退,感觉不好. 查了些资料有这么些: 一.toast_plugin插件 <script type="text/javas ...

  7. Entity Framework 利用 Database.SqlQuery<T> 执行存储过程,并返回Output参数值

    做个记录: var pCount = this._dataProvider.GetParameter(); pCount.ParameterName = "totalCount"; ...

  8. Eclipse Plugin Dev Materials

    以下资料是本人在开发Eclipse 插件时候收集的一些比较有用的资料Link,和大家分享下. 比较权威的资料: Helpful Eclipse Plugin Websites: Eclipse Art ...

  9. Java魔法堂:打包知识点之META-INF/MAINFEST.MF(转)

    一.前言 通过执行形如 jar -cvf src.jar src 命令将多个.class文件打包成JAR包时,你会发现JAR包中除了src目录外还多了个MATE-INF/MAINFEST.MF,那是为 ...

  10. linux下so动态库一些不为人知的秘密(上)

    linux 下有动态库和静态库,动态库以.so为扩展名,静态库以.a为扩展名.二者都使用广泛.本文主要讲动态库方面知识.        基本上每一个linux 程序都至少会有一个动态库,查看某个程序使 ...