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,浮点型的也就 ...
随机推荐
- 理解MVC路由配置(转)
在上一篇文章中,我简短的谈了一下MVC的底层运行机制,如果对MVC还不是很了解的朋友,可以作为入门的参照.接下来,我开始介绍关于URL路由的相关知识.URL路由不是MVC独有的,相反它是独立于MVC而 ...
- 3D模型制作
agisoft: http://www.agisoft.com/downloads/installer/ http://pan.baidu.com/s/1dDwA3tf http://pan.baid ...
- 如何查找ORACLE中的跟踪文件
一.跟踪文件是干什么用的? 跟踪文件中包含了大量而详细的诊断和调试信息.通过对跟踪文件的解读和分析,我们可以定位问题.分析问题和解决问题.从跟踪文件的产生的来源来看,跟踪文件又可以分为两 ...
- php cli 模式下执行文件,require 加载路径错误
今天,同事突然告诉我,我写的一个做计划任务的php脚本执行总是不成功. 脚本本身很简单,里面只有包含了几个库文件并执行了一个函数,函数应该没有错误,这个函数在别处也调用过,没有问题.我在本地用浏览器访 ...
- mac/linux install hg
MAC OSX 10.9: sudo port -v install mercurial or easy_install mercurial
- 引用 - PHP手册笔记
引用是什么 PHP中的引用意味着,用不同的变量名访问同一变量内容,类似于Unix的文件名和文件本身(变量名是目录条目,变量内容是文件本身,即用不同的目录条目访问同一文件),可以看做Unix文件系统中的 ...
- python 源代码分析之调试设置
首先在官方下载源代码,我下载的是最新版本3.4.3版本:https://www.python.org/ftp/python/3.4.3/Python-3.4.3.tgz 解压后的目录如下(借用网上的目 ...
- 数据库sqlite的使用
#import <Foundation/Foundation.h> @class student; @interface DataBaseHandle : NSObject //设置单例 ...
- C# 动态语言特性,dynamic 关键字研究
1 动态语言简介 支持动态特性的语言现在大行其道,并且有继续增长的趋势.比如 Ruby 和 Python, 还有天王级的巨星 --- JavaScript. 现在一个程序员说自己对 Jav ...
- 使用httpwatch抓包
httpwatch抓包工具是MS的ie自带的一个插件. 但是千里之行始于足下,所以先来利用httpwatch抓一些包来分析分析. 打开IE,快捷键shift+F2打开httpwatch. 如下图: 本 ...