Python-数据类型

  1. 数据类型
    1. 整型
    2. 浮点型
    3. 字符串
    4. 原样字符串
    5. 布尔型
    6. None

数据类型

计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值。但是,计算机能处理的远不止数值,还可以处理文本、图形、音频、视频、网页等各种各样的数据,不同的数据,需要定义不同的数据类型。
获取数据类型,type()内置函数

>>> type(118)
<class 'int'>
>>> type('118')
<class 'str'>

或者instance()函数判断数据类型


>>> isinstance(118, int)
True
>>> isinstance('118', str)
True

在Python中,能够直接处理的数据类型有以下几种:

整型

Python可以处理任意大小的整数,当然包括负整数,在程序中的表示方法和数学上的写法一模一样,例如:1,100,-8080,0,等等。
10进制:默认进制,0-9组成
2进制:0b前缀,0,1组成
8进制:0o前缀,0-7组成
16进制:0x前缀,0-9,a-f组成

>>> print(118)
118
>>> print(0b1110110)
118
>>> print(0o166)
118
>>> print(0x76)
118

使用内置函数bin()/oct()/hex()将十进制数转化为2/8/16进制数

>>> bin(118)
'0b1110110'
>>>
>>> oct(118)               ##在python2中,o会被省略,算是个很大的区别
'0o166'
>>>
>>> hex(118)
'0x76'

内置函数int()创建整数,也可以把数字的字符串转化为整型

>>> int()
0
>>> int(118)
118
>>> int('118')
118
>>> int(118.2)
118
>>> int('asd')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'asd'
>>> int('118.2')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '118.2'

>>> int('0b1110110', 2)           ##第一个参数必须是字符串类型
118 
>>> int('0o166', 8)
118
>>> int('0x76', 16)
118

在python2中,8进制的前缀0o中的o会被省略,但是在python3中,必须严格写上,否则会报错

#python2
>>> int(066)
54

#python3
>>> int(066)
  File "<stdin>", line 1
    int(066)
          ^
SyntaxError: invalid token

>>> int(0o66)
54

负整型就在前面加上“-”号就行了,例如:

>>> print(-0b1110110)
-118
>>> bin(-118)
'-0b1110110'

浮点型

浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的,比如,1.23x10^9和12.3x10^8是完全相等的。浮点数可以用数学写法,如1.23,3.14,-9.01,等等。但是对于很大或很小的浮点数,就必须用科学计数法表示,把10用e替代,1.23x10^9就是1.23e9,或者12.3e8,0.000012可以写成1.2e-5,等等。

float()内置函数创建浮点数,不传递参数时,返回浮点数0.0;

>>> float()
0.0
>>> float(1)
1.0
>>> float(1.5)
1.5
>>> float('1.5')
1.5
>>>

print(2.3e8)

230000000.0
>>> print(2.3e-4)
0.00023

浮点数存储的不精确性,整数和浮点数在计算机内部存储的方式是不同的,浮点数在计算机中使用二进制存储,整数运算永远是精确的(除法难道也是精确的?是的!),而浮点数运算则可能会有四舍五入的误差。

>>> print(1.1 + 2.2 - 3.3)
4.440892098500626e-16

>>> print(1.1 +2.2)
3.3000000000000003

精确计算浮点数,使用decimal(小数)模块或者fractions(分数)模块,可应用于金额等精确计算的场景

>>> import decimal
>>> print(decimal.Decimal('1.1') + decimal.Decimal('2.2') - decimal.Decimal('3.3'))          ##注意传递的参数时字符串类型
0.0
>>> import fractions
>>> print(fractions.Decimal('1.1') + fractions.Decimal('2.2') - fractions.Decimal('3.3'))    ##注意传递的参数时字符串类型
0.0
>>> print(fractions.Fraction(11, 10) + fractions.Fraction(22, 10) - fractions.Fraction(33, 10))  ##fractions.Fraction(11, 10) == 11/10
0

字符串

字符串是以单引号’或双引号”括起来的任意文本,比如’abc’,”xyz”等等。
请注意,’’或””本身只是一种表示方式,不是字符串的一部分,因此,字符串’abc’只有a,b,c这3个字符。如果’本身也是一个字符,那就可以用””括起来,比如”I’m OK”包含的字符是I,’,m,空格,O,K这6个字符。

>>> print("I'm OK")
I'm OK

原样字符串

>>> print(r"I'm \t ok")
I'm \t ok
>>> print("I'm \t ok")
I'm     ok

布尔型

只有两个取值。True 或者 False (python关键字,首字符大写);
True的值为1
False的值为0

>>> True == 1
True
>>> False == 0
True
>>> print(True + 1)
2
>>> print(False + 1)
1

布尔值可以进行逻辑运算(and、or、not)

>>> True and False
False
>>> True or False
True
>>>
>>> True or False
True
>>> not True
False

以下对象的布尔值为False:
False、数值0、None、空字符串、空列表、空元组、空字典、空集合。

>>> for x in [False, 0, None, '', [], (), {}, set()]:
...     print('%5s 的布尔值为:%s' %(x, bool(x)))
...
False 的布尔值为:False
    0 的布尔值为:False
None 的布尔值为:False
      的布尔值为:False                ##这里是空字符串
   [] 的布尔值为:False
   () 的布尔值为:False
   {} 的布尔值为:False
set() 的布尔值为:False

除了以上的类型,其他都为True。

所有对象都可被直接用作布尔值,解释器会自动调用内置函数bool()进行转换

None

用于表示数据值的不存在,是实实在在的对象,占用内存空间,并不意味着空或者未定义,None是something而不是nothing

>>> id(None)
139944117241744

使用场景,对象None经常用于变量的初始化,或者将变量重置为“数据值不存在”的状态

>>> a = None
>>> print(a)
None

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 289211569@qq.com