Python 有哪些基础数据类型?
![0qFglw](https://cosmos-x.oss-cn-hangzhou.aliyuncs.com/0qFglw.png)
基础类型
在 Python 中,能够直接处理的数据类型有以下几种:
int
Python 中理论上可以处理任意大小的整数,可以输入以下代码感受下:
>>> 2 ** 100000
同时标准又提供了 sys.maxsize
来表示任何我们实际工作中能够表示的最大的整型数值。
>>> import sys
>>> sys.maxsize
9223372036854775807
Python 2.x 中有 int
和 long
两种类型的整数,但这种区分对 Python 来说意义不大,因此在 Python 3.x 中整数只有 int
这一种了, 且 int
是没有限制 大小的,可以当作 long
类型使用。
int 也支持二进制(如 0b100
)、八进制(如 0o100
)、十进制(100)和十六进制( 0x100
)的表示法。
对于很大的数,例如 10000000000
,很难数清楚 0 的个数。Python 允许在数字中间以 _
分隔,因此,写成 10_000_000_000
和 10000000000
是完全一样的。十六进制数也可以写成 0xa1b2_c3d4
。
Number 是不可变的,这就意味着如果改变 Number 的值,将重新分配内存空间。
float
浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的,比如,1.23x109 和 12.3x108 是完全相等的。浮点数可以用数学写法,如 1.23
,3.14
,-9.01
,等等。但是对于很大或很小的浮点数,就必须用科学计数法表示,把 10 用 e 替代,1.23x109 就是 1.23e9
,或者 12.3e8
,0.000012 可以写成 1.2e-5
,等等。
整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的(除法难道也是精确的?是的!),而浮点数运算则可能会有四舍五入的误差。
complex
复数由实数部分和虚数部分构成,可以用 a + bj
, 或者 complex(a,b)
表示, 复数的实部 a 和虚部 b 可以是 int 或 float。比如 3 + 5j
,跟数学上的复数表示一样,唯一不同的是虚部的 i
换成了 j
。实际上,这个类型并不常用,了解一下就可以了。
str
字符串是以单引号或双引号括起来的任意文本,比如 'hello'
和 "hello"
,字符串还有原始字符串表示法、字节字符串表示法、Unicode 字符串表示法, 而且可以书写成多行的形式(用三个单引号或三个双引号开头,三个单引号或三个双引号结尾)。
'''
line1
line2
'''
Output:
'\nline1\nline2\n'
print('''line1
line2''')
Output:
line1
line2
转义字符 \
可以转义很多字符,比如:'I\'m Kimi'
。
bytes
Python 对 bytes 类型的数据用带 b 前缀的单引号或双引号表示:
x = b'ABC'
b''
里面的字符只能是 ASCII,否则会报错:
>>> b'中文'
File "<ipython-input-114-241a368e5c3e>", line 1
b'中文'
^
SyntaxError: bytes can only contain ASCII literal characters.
bool
布尔值只有 True
、False
两种值(请注意大小写),也可以通过关系运算(比较运算)计算出来,例如 3 < 5
会产生布尔值 True
,而 2 == 1
会产生布尔值 False
。
比较运算符也称为关系运算符,包括==
、!=
、<
、>
、<=
、>=
。比较运算符会产生布尔值,要么是True
要么是False
。
逻辑运算符有三个,分别是and
、or
和not
。
bool 类型的值不同与其他语言,一定要注意开头字母大写。
None
空值是 Python 里一个特殊的值,用 None
表示。 None
不能理解为 0,因为 0 是有意义的,而 None
是一个特殊的空值。