python学习笔记:python数字
一、数字类型分类
数字提供了标量存储和直接访问,它是不可更改类型,也就是说变更数字的值会产生新的对象。python的对象模型与常规对象模型有些不同,对数字对象的更新,实际上是生成了一个新的数值对象,并得到它的引用。
在学习编程的过程中,我们一直接受这样的教育:变量就像一个盒子,里面装着变量的值。在python中,变量更像一个指针指向装变量值的盒子。对于不可改变类型来说,你无法改变盒子的内容,但可以将指针指向一个新盒子。每次将另外的数字赋值给变量的时候,实际上是创建了一个新的对象,并将它赋值给变量。
按照python的规则,你无法真正删除一个数字对象,你仅仅是不再使用它而已。如果你确实想删除一个数值对象的引用,使用del语句即可。
1. 整型
整型的数字可以分为
- 布尔型:布尔型其实是整型的子类型,布尔型数据只有两个取值:True和False,分别对应整型的1和0。每一个Python对象都天生具有布尔值(True或False),进而可用于布尔测试(如用在if、while中)。以下对象的布尔值都是False:None、False(布尔型)、(整型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. 算术操作符
除法
- 传统除法:如果是整型除法,舍去小数部分,返回一个整型(地板除),如果操作数之一是浮点数,执行真正的除法。
- 真正除法:除法运算总是返回真实的商,不管操作数是整型还是浮点型。要引入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数字的更多相关文章
- Python学习笔记—Python基础1 介绍、发展史、安装、基本语法
第一周学习笔记: 一.Python介绍 1.Python的创始人为吉多·范罗苏姆.1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言 ...
- python学习笔记-python程序运行
小白初学python,写下自己的一些想法.大神请忽略. 安装python编辑器,并配置环境(见http://www.cnblogs.com/lynn-li/p/5885001.html中 python ...
- Python学习笔记--Python字符串连接方法总结
声明: 这些总结的学习笔记,一部分是自己在工作学习中总结,一部分是收集网络中的知识点总结而成的,但不到原文链接.如果有侵权,请知会,多谢. python中有很多字符串连接方式,总结一下: 1)最原始的 ...
- Python学习笔记——Python Number(数字)
Python Number 类型转换 int(x, y) #将x转换为一个整数,y为进制数.如 int('11',2)将二进制数的11转成十进制数的整数,结果为3 long(x, y) #将x转换为一 ...
- python学习笔记 ——python写的猜数字游戏 002
from sys import exit import random def Arrfor(str): #CONTST = CONTST + 1 artificial = input("请输 ...
- python学习笔记-python解释器
刚开始学习python,首先要了解一下python解释器. 什么是python解释器? 编写python代码保存后,我们会得到一个以.py为扩展名的文本文件.要运行此文件,就需要python解释器去执 ...
- [Python学习笔记][Python内置函数]
Python 常用内建函数 比较基础的列表 abs(x) 求绝对值 pow(x,y) 返回x的y次方,等同于x**y round(x[,小数位数]) 对x进行四舍五入,若不指定位数,则返回整数 chr ...
- Python学习笔记(Ⅰ)——Python程序结构与基础语法
作为微软的粉丝,最后终于向Python低头了,拖了两三个月终于下定决心学习Python了.不过由于之前受到C/C#等语言影响的思维定式,前期有些东西理解起来还是很费了些功夫的. 零.先抄书: 1.Py ...
- python学习笔记--python编程基础
一.一个隆重的仪式 我们在学习语言的时候,第一个写的程序肯定都是hello world.来写第一个程序吧,其实很简单,python的语法就是简单.优雅,一个print就搞定. 1 print('hel ...
- python学习笔记--python数据类型
一.整形和浮点型 整形也就是整数类型(int)的,在python3中都是int类型,没有什么long类型的,比如说存年龄.工资.成绩等等这样的数据就可以用int类型,有正整数.负整数和0,浮点型的也就 ...
随机推荐
- PHP基础之 file_get_contents() 函数
定义和用法 file_get_contents() 函数把整个文件读入一个字符串中. 和 file() 一样,不同的是 file_get_contents() 把文件读入一个字符串. file_get ...
- JavaMail发送简单邮件
非常简单的发送邮件实现,网上有很多啦,但还是自己写写记录下吧. package cn.jmail.test; import java.util.Properties; import javax.mai ...
- 注册表添加python
win(python2.7)下: 执行此文件 #!/usr/bin/env python # encoding:utf-8 # # script to register Python 2.0 or l ...
- Light Bulb--zoj3203(三分法)
Light Bulb Time Limit: 1 Second Memory Limit: 32768 KB Compared to wildleopard's wealthiness, h ...
- jQuery插件jqplot的详细配置说明和渲染器
jQuery插件jqplot的详细配置说明和渲染器 (2012-08-23 08:57:42) 转载▼ 标签: jqplot 详细配置 渲染器 it 分类: 技术类 jQuery.jqplot插件的官 ...
- MSBI常见问题总结
SSIS 1.对连接管理器“DC”的AcquireConnection方法调用失败,错误代码0xC0209303.可能在此之前已经发出错误消息,提供了有关AcquireConnection方法调用失败 ...
- 映射 SQL 和 Java 类型
http://alex2009.blog.51cto.com/749524/272942 AJAX: http://www.w3school.com.cn/jquery/ajax_ajax.asp h ...
- MFC 动态创建按钮
首先在对话框(模式对话框,无模式对话框)中添加一个ADD按钮,通过点击按钮产生的通告消息调用::OnBtnAdd()方法.此方法会在对话框的左上角创建一个按钮. 当然首先要在和次对话框相关联的类中添加 ...
- Silverlight中的拖拽实现的图片上传
原文 http://blog.csdn.net/dujingjing1230/article/details/5443003 在Silverlight中因为可以直接从系统的文件夹里面拖出来一个文件直接 ...
- IPicture总结
1.利用IPicture接口加载.显示图片 IPicture接口管理一个图片对象和它的属性.图片对象提供对Bitmap Icon Metafile的语言不相关的抽象支持.图像对象的主要接口是IPict ...