Python数据类型(python3)

python学习网 2018-03-28 12:36:02

Python数据类型(python3)

基础数据类型

  • 整型 <class 'int'>

    • 带符号的,根据机器字长32位和64位表示的范围不相同,分别是:
    • -2^31 - 2^31-1 和 -2^63 - 2^63 -1
    • Python为了程序运行速度,使用了小整数对象池,避免整数对象的频繁申请和销毁,增加程序运行速度的开销。也就是声明多个小整数赋值给变量,这些变量都是指向的小整数对象池里面的那个小整数对象。相反大整数都会重新实例一个在内存中。

>>>id(258)
1971357673680
>>>id(258)
1971357675120
>>>id(258)
1971357672720
#以上三次实例的整数都是单独的
>>>id(256)
1390248128
>>>id(256)
1390248128
#以上两次实例的小整数都是同一个实例

  • .
    • 所谓小整数是[-5,257)的左闭右开区间。
    • 而对于大整数也会有个对象池,将没有使用的保留在对象池中,不会销毁,有需要的时候直接被使用。

    • 整数对象能进行算数运算,特别的是%取模,和divmod(a,b) -> (整除数,余数) 形式的一个元组tuple

    • 多种表示方式
      • 二进制binary:0b111011
      • 八进制octonary:0o7237
      • 十进制decimalism:10392049
      • 十六进制hexadecimal:0xAB23CF
      • 进制转化间使用bin(),oct(),hex()
  • 浮点<class 'float'>

    • 即分数,有限小数和无限循环小数
    • 之所以叫浮点,是按照科学计数法表示时,小数点位是可变的1.23*109
    • 不精确,默认是17位精度。如果都是用严格的科学计数法表示的话,那么小数点后能表示16位,小数点前只有1位
    • 当需要更高精度,超过16位,那么就得使用decimal模块。1st,先使用getcontext(位数)设置精确位数,然后在使用Decimal(1.232)对象来表示小数并使用其进行算数运算,最后得到的也是Decimal对象
    • 如果用格式化字符串来设定精确位数,会非常的不准确。

>>> a = "%.30f" % (1.0/3)
>>> a

'0.333333333333333314829616256247'

  • 字符串<class 'str'>

    • 字符串也是序列,很多序列的工厂函数都可以使用
    • 字符串是不可变对象,immutable,可以hash,可以做字典key
    • 表示法:

      • 单引号,双引号,三对单/双引号
      • r"dsf" 表示的字符,取消引号中的特殊字符意义
      • u"kdsjf"表示unicode编码的字符串,在python3中等同于普通字符串表示法;但在python2中这就是一种单独类型的数据对象,叫unicode。所以蛋疼的python2和python3在字符编码上让人头晕。好了,这里我们只提python3,那python3多了一个bytes类型,因为是独立的一个类型,但是还是是序列的一种。下面说:
      • b'sdfs' 在python3中这个可不是字符串,是bytes。应该可以认为是可以表示数据流。python2中就是字符串。
      • 在python3中通过str.encode()转换为bytes,通过bytes.encode()转换为str。和两个方法互转。
      • python3解释器默认utf-8编码,是支持对utf-8的转码为unicode的。python2就需要显示指定编码。同样python3的源码如果是gbk的编码,那么也是需要在文件头添加gbk的编码指定,代码加载到内存中后会转码为unicode

>>>import sys
>>>print(sys.getdefaultencoding())
utf-8

  • .
    • 编码不能说太多了,太多只有看网上大牛的文章了。

    • 字符的编码查看ord('s')返回字符的unicode编码十进制,通过chr(103923)返回十进制编码对应的字符。
    • 对于小于4个字节字符串使用一个类似小整数的字符串对象池。
    • 还有大于4个字节字符串也有想大整数类似的字符串对象缓冲池,而且提供intern()方法手动都指定同一个字符串实例。

  • 布尔<class 'bool'>
    • False True
    • 隐含bool值:[] {} 0 () '' 0 None作False, 其它所有非空的数据都可以作True
  • 空值
    • None 什么都没有

其它常用类型(进行ing)

  • 列表
  • 元组
  • 字典
  • 集合
  • collections模块
阅读(760) 评论(0)