数据是业务的核心,任何编程语言都要支持各种数据类型。我们一起来学习一下 Python 支持的数据类型。
Python 内置了 numeric、string 和 Boolean 等基本数据类型,同时也提供了诸多内置的 函数(functions)供我们调用。
【整数】
Python 3 中,你可以定义任一长度的整数,语言层面并不限制整数的长度的。实际操作中,整数的长度受限于机器物理内存的大小。
当然,任何数据类型都会受到物理内存大小的限制。
理论上,你可以随心定义任何长度的整数:
>>> print(123123123123123123123123123123123123123123123123 + 1)123123123123123123123123123123123123123123123124
对于十进制整数,你不需要添加任何前置标识:
>>> print(2021)2021
如果想要定义其他进制的整数,你需要在数字前边添加不同的前置符:
前置符含义进制基数
0b
二进制
2
0o
八进制
8
0x
十六进制
16
不同进制整数举例如下:
>>> print(0b1011)11>>> print(0o1011)521>>> print(0x1011)4113
在 Python 底层,整数是通过一个名为 int 的类来实现的。这个类和整数的基数无关。
>>> type(1011)>>> type(0b1011)>>> type(0o1011)>>> type(0x1011)
【浮点数】
float 是 Python 中实现浮点类型数字的数据类型。
float 类型的数值通过小数点(.)来指定。也可以在数值后边追加字符 E(或 e)来使用科学计数法表示一个浮点数。
>>> 4.24.2>>> type(4.2)>>> 4.4.0>>> .20.2>>>>>>>>> .4e74000000.0>>> type(.4e7)>>> 4.2e-40.00042
几乎所有的平台都是以 64 位双精度的方式来表示一个 Python 浮点数。
因此,最大的浮点数接近于 1.8*10308。超过此值的浮点数将被表示为 inf:
>>> 1.79e3081.79e+308>>> 1.8e308inf
最接近 0 的非 0 数的值为 5.0*10-324。任何接近于此值的数字都被解释为 0:
>>> 5e-3245
e-324>>> 1e-3240.0
浮点数在内部是以二进制小数来表示的,大多数十进制小数无法通过二进制的方式来精确表达。所以,多数情况下,浮点数的内部表示和真实值之间是存在细微差距的,这个“细微”可以忽略不计。
【复数】
Python 原生支持复数。
复数以 +j 的方式来指定。
>>> 2+3j(2+3j)>>> type(2+3j)
【字符串】
字符串是指一个包含字符数据的序列。Python 底层以 str 类来表示字符串。
我们可以使用成对的单引号或双引号来表示字符串常量。
>>> 'hello world''hello world'>>> type('hello world')>>>>>> "hello world"'hello world'>>> type("hello world")
字符串可以包含任意多个字符,也可以为不包含任何字符的空字符串。
>>> ''''
如果你想在字符串中包含引号字符,最简单的方法是:在一种引号对中包含另一种引号字符:
>>> 'this string contains a double quote(") character''this string contains a double quote(") character'>>> "this string contains a single quote(') character""this string contains a single quote(') character"
你还可以通过转义字符(\)来实现这个目的。
>>> 'this string contains a single quote(\') character'"this string contains a single quote(') character"
Python 中使用斜杠(\)来实现对特定字符的转义。
转义,即:使字符失去原来的含义。可以从两方面来理解:
1,去掉字符的特殊含义。
比如上文中的单引号和双引号,它们在 Python 中被“特别地”用于定义字符串常量。如果我们想使用其“原本”含义,就可以在前边使用 \ 来转义。
其他可以转义的特殊字符为:
转义字符串字符特殊含义转义后的含义
\'
用于定义字符串常量
单引号字符
\"
用于定义字符串常量
双引号
\newline
换行
取消换行,表示多行
\\
转义其他字符
斜杠
通常,在源码中输入换行,代表一个语句的结束。这可能会引起语法错误:
>>> print('aFile "", line 1print('a^SyntaxError: EOL while scanning string literal
如果需要,这时候可以使用 \ 对换行符进行转义,以表明这是一个多行语句:
>>> print('a\... b\... c')abc
转义字符(\)本身也可以被转义:
>>> print('hello backslash \\')hello backslash \
2,为字符赋予特殊含义
我们使用的键盘上的某些按键具有特殊功能,无法直接用单个字符来表示,如果想要输出这些按键,可以对其他普通字符进行转义。
比如常用的 Tab 按键代表制表符,可输出 4 个空格。我们可以对字符 t 进行转义,来表示 Tab。
>>> print('Tab\tSpace')Tab Space
其他可以转义为特殊用途的字符举例如下:
转义字符串含义
\a
ASCII Bell 字符,响铃
\b
退格
\n
换行
\r
回车
Python 中还包含另外两种字符:裸(raw)串和三引用字符串。1,裸串在字符串常量之前添加 r 或 R,就形成了一个裸串。它表示不对其中的字符做任何转义,原原本本地按字面意思处理。
>>> print('foo\nbar')foobar>>> print(r'foo\nbar')foo\nbar
2,三引用字符串
除了使用单引号和双引号来定义常量字符串,Python 还支持使用三引号(''' 或 """)来定义常量字符串。
>>> print('''This string has a single (') and a double (") quote.''')This string has a single (') and a double (") quote.
在三引号字符串中,单引号、双引号和换行符保留字面意思,其他转义规则仍生效。
因此,可以用三引号来定义多行字符串常量。
>>> print('''line 1... line 2... line3... ''')line 1line 2line3
除此之外,三引号字符串还可以用于代码注释。
【Boolean类型】
Python 3 提供了 Boolean 数据类型。该类型的对象取值为:True 或 False。
>>> type(True)
>>>> type(False)
在 Python 中,我们经常对逻辑表达式的值进行判断,以确定其是否为 True 或 False。
【内置函数】
函数是多个语句封装,以提供可复用的功能。
Python 3 内置了大量函数供我们调用,这里按功能列出一些。
数学函数:
函数名功能
abs()
计算绝对值
divmod()
计算商和余数
max()
求最大值
pow()
求指数值
sum()
求和
类型转换函数:
函数名功能
ascii()
返回一个对象的 ascii 字符串
bool()
将参数转换为 bool 值
complex()
将参数转换为一个复数
str()
返回一个对象的字符串表示
type()
返回对象的类型
可迭代对象和迭代器:
函数名功能
all()
测试是否所有元素满足某个条件
any()
测试是否任一元素满足某个条件
enumerate()
返回一个包含元素索引和值的tuple组成的list
filter()
过滤满足条件的元素
len()
返回对象的长度
map()
对所有元素执行某个运算
iter()
返回一个迭代器
next()
从迭代器获取下一个元素
range()
产生一个包含整数的range
reversed()
返回一个翻转的迭代器
sorted()
从一个可迭代对象返回一个已排序的list
【结语】
我们在本文中简单了解了 Python 内置的基本数据类型和一些函数。
由这些基本的数据类型可以构建更复杂的数据类型。
当然,Python 还提供了其他重要和易用的“高级”数据类型,我们会在后续的文章中陆续学习。