Python 04

数字类型

数字提供了标量贮存和直接访问,它是不可更改类型,变更数字的值会生成新的对象。Python支持多种数字类型:整型、长整型、布尔型、双精度浮点型、十进制浮点型和复数。通过给数字对象(重新)赋值,可以“更新”一个数值对象,该过程实际上并没有更新该对象的原始数值,因为数值对象是不可改变的,Python的对象模型与常规对象模型有些不同,更新过程实际上是生成了一个新的数值对象,并得到它的引用。数值对象无法真正删除,如果实际上想删除一个数值对象的引用,使用del语句,删除对象的引用之后就不能再使用这个引用,除非给他附一个新值,如果试图使用一个已经被删除的对象引用,会引发NameError异常:

>>> IntValue = 1
>>> LongValue = -123456789
>>> FloatValue=3.14159265358
>>> ComplexValue=1.23+4.12J
>>> id(IntValue)
498489616
>>> IntValue += 1
>>> IntValue
2
>>> id(IntValue)
498489632
>>> del IntValue
>>> IntValue
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'IntValue' is not defined
整型

Python有几种整数类型,布尔类型只有两个值的整型,常规整型是绝大多数现代系统都能识别的整型,Python也有长整数类型并且其值远超过C语言的长整数

  • 布尔型:取值范围只有两个值:True和False
  • 标准整数类型:在32位机器上为-2,147,483,648到2,147,483,647,在64位机器上整数将是64位,Python标准整数类型等价域C的(有符号)长整型,整数一般以十进制表示,但是Python也支持八进制或十六进制来表示整数,八进制以数字“0”开始,十六进制以“0x”或“0X”开始
  • 长整型:Python的长整数类型能表达的数值仅仅与机器支持的(虚拟)内存大小有关,因此可以表达很大的整数,当python3中长整型已取消
  • 双精度浮点数:Python中浮点数类似C语言中的double类型,是双精度浮点数,可以用直接的十进制或科学计数法表示,每个浮点数占8个字节(64bit),其中52个bit用于表示底,11个bit表示指数,剩下的一个bit表示符号,浮点数值通常都有一个小数点和一个可选的后缀e,在e和指数之间可以用+或-表示指数的正负
  • 复数:在Python中有关复数的几个概念,虚数不能单独存在,它们总是和一个值0.0的实数部分一起来构成一个复数;复数由实数部分和虚数部分构成;表示虚数的语法(real+imagj);实数部分和虚数部分都是浮点数;虚数部分必须有后缀j或J(1.23+1.5j,0.32-2.5j,-1.23-34J)
    复数的内建属性:复数对象拥有数据属性,分别为该复数的实部和虚部,复数还拥有conjugate方法,调用它可以返回该复数的共轭复数对象
属性描述
num.real复数的实部
num num.imag复数的虚部
num.conjugate()返回该复数的共轭复数
>>> Complex=-123.456-3.14j
>>> Complex
(-123.456-3.14j)
>>> Complex.real
-123.456
>>> Complex.imag
-3.14
>>> Complex.conjugate()
(-123.456+3.14j)
运算符

除相同类型相加外,Python还支持不同的数字类型相加,当一个整数和一个浮点数相加时,系统会决定使用整数加法还是浮点数加法,Python使用数字类型强制转换的方法来解决数字类型不一致的问题,它会强制将一个操作数转换为同另一个操作数相同的数据类型,这种操作不是随意的会遵循一下基本规则:如果两个操作数都是同一种数据类型,没有必要进行类型转换,仅当两个操作数类型不一致时python才会去检查一个操作数是否可以转换为另个类型的操作数,如果可以转换它并返回转换结果,由于某些转换是不可能的,如将一个复数转换为非复数类型,将一个浮点数转换为整数等,因此需要遵守几个规则,要将一个整数转换为浮点数,只要在整数后面加个.0就可以了,要将一个非复数转换为复数,只需要加上一个“0j”的虚数部分,基本原则是整数转换为浮点数,非复转转换为复数,python中关于coerce()方法的描述:如果有一个操作数是复数,另一个操作数被转换为复数;否则,如果有一个操作数是浮点数,另一个操作数被转换为浮点数;否则,如果有一个操作数是长整数,则另一个操作数被转换为长整数;否则,两个必然都是普通整数,无需类型转换。

内建函数域工厂函数
转换工程函数

由于python2.2对类型和类进行了整合,所有这些内建函数都转变为工厂函数,工厂函数是只内建函数都是类对象,但调用它们时,实际上是创建了一个类实例:

  • bool(obj):返回obj对象的布尔值,即obj.nonzero()方法的返回值
  • int(obj,base=10):返回一个字符串或数值对象的整数表示,类似string.atoi()
  • long(obj,base=10):返回一个字符或数据对象的长整数表示,类似string.atol()
  • float(obj):返回一个字符串或数据对象的浮点数表示,类似string.atof()
  • complex(str) or complex(real,imag=0.0):返回一个字符串的复数表示,或者根据给定的实数(及一个可选的虚数部分)生成一个复数对象
>>> int(3.1415)
3
>>> complex(3)
(3+0j)
>>> complex(3.14,-5)
(3.14-5j)
>>> complex(3.14e-10,12.3e4)
(3.14e-10+123000j)

功能函数:python有五个运算内建函数用于数值计算:abs(),coerce(),divmod(),pow(),和round()

  • abs():返回给定参数的绝对值,若参数是一个复数,就返回math.sqrt(num.real2+num.imag2)
  • coerce():支持自定义两个数值类型转换的方法,该函数仅回一个包含类型转换完毕的两个数值元素的元祖,3.5当前不支持
  • divmod():内建函数把除法和取余运算结合起来,返回一个包含商和余数的元祖对整数来说,它的返回值就是地板除和取余操作的结果,对浮点数来说,返回的商部分是math.floor(num1/num2),对复数来说,商部分是ath.floor((num1/num2).real)
  • pow():和双星号(**)运算符都可以进行指数运算,
  • round():用于对浮点数进行四舍五入运算,它有一个可选的小数位数参数,如果不提供小数位参数,返回与第一个参数最接近的整数(但仍然是浮点类型),第二个参数告诉round函数将结果精确到小数点后指定位数
>>> abs(-3.14)
3.14
>>> abs(3.)
3.0
>>> abs(1.3+2.5j)
2.817800560721074
>>> abs(1.23-12.45)
11.219999999999999
>>> divmod(10,3)
(3, 1)
>>> divmod(2,10)
(0, 2)
>>> divmod(10,2.0)
(5.0, 0.0)
>>> divmod(1.2,10)
(0.0, 1.2)
>>> pow(2,3)
8
>>> pow(1.1,2)
1.2100000000000002
>>> pow(1+1j,3)
(-2+2j)
>>> round(3)
3
>>> round(3.44)
3
>>> round(3.51)
4
>>> round(3.44,1)
3.4
>>> round(3.45,1)
3.5
用于整数的函数

函数分为两类,一类用于进制转换,另一类用于ASCII转换

  • hex(num):将数字转换成十六进制树并以字符串形式返回
  • oct(num):将数字转换成八进制并以字符串形式返回
  • chr(num):将ASCII值的数字转换成ASCII字符,范围只能是0<=num<=255
  • ord(chr):接收一个ASCII或Unicode字符(长度为1的字符串),返回相应的ASCII或Unicode值
  • unichr(num):接受Unicode码值,返回其对应的Unicode字符,所接收的码值范围依赖域Python是构建于UCS-2还是UCS-4
>>> hex(254)
'0xfe'
>>> oct(254)
'0o376'
>>> ord('a')
97
>>> ord('A')
65
>>> chr(97)
'a'
>>> chr(65)
'A'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值