RealPython基础教程:Python 基本数据类型介绍
数据是业务的核心,任何编程语言都要支持各种数据类型。我们一起来学习一下 Python 支持的数据类型。
Python 内置了 numeric、string 和 Boolean 等基本数据类型,同时也提供了诸多内置的 函数(functions)供我们调用。
【整数】
Python 3 中,你可以定义任一长度的整数,语言层面并不限制整数的长度的。实际操作中,整数的长度受限于机器物理内存的大小。
当然,任何数据类型都会受到物理内存大小的限制。
理论上,你可以随心定义任何长度的整数:
123123123123123123123123123123123123123123123124
对于十进制整数,你不需要添加任何前置标识:
2021
如果想要定义其他进制的整数,你需要在数字前边添加不同的前置符:
前置符 | 含义 | 进制基数 |
---|---|---|
0b | 二进制 | 2 |
0o | 八进制 | 8 |
0x | 十六进制 | 16 |
不同进制整数举例如下:
11
521
4113
在 Python 底层,整数是通过一个名为 int 的类来实现的。这个类和整数的基数无关。
<class 'int'>
<class 'int'>
<class 'int'>
<class 'int'>
【浮点数】
float 是 Python 中实现浮点类型数字的数据类型。
float 类型的数值通过小数点(.)来指定。也可以在数值后边追加字符 E(或 e)来使用科学计数法表示一个浮点数。
4.2
<class 'float'>
4.0
0.2
>>>
>>> .4e7
4000000.0
<class 'float'>
0.00042
几乎所有的平台都是以 64 位双精度的方式来表示一个 Python 浮点数。
因此,最大的浮点数接近于 1.8*10308。超过此值的浮点数将被表示为 inf:
1.79e+308
inf
最接近 0 的非 0 数的值为 5.0*10-324。任何接近于此值的数字都被解释为 0:
5
e-3240.0
浮点数在内部是以二进制小数来表示的,大多数十进制小数无法通过二进制的方式来精确表达。所以,多数情况下,浮点数的内部表示和真实值之间是存在细微差距的,这个“细微”可以忽略不计。
【复数】
Python 原生支持复数。
复数以 <实部>+<虚部>j 的方式来指定。
(2+3j)
<class 'complex'>
【字符串】
字符串是指一个包含字符数据的序列。Python 底层以 str 类来表示字符串。
我们可以使用成对的单引号或双引号来表示字符串常量。
'hello world'
<class 'str'>
>>> "hello world"
'hello world'
<class 'str'>
字符串可以包含任意多个字符,也可以为不包含任何字符的空字符串。
''
如果你想在字符串中包含引号字符,最简单的方法是:在一种引号对中包含另一种引号字符:
'this string contains a double quote(") character'
"this string contains a single quote(') character"
你还可以通过转义字符(\)来实现这个目的。
"this string contains a single quote(') character"
Python 中使用斜杠(\)来实现对特定字符的转义。
转义,即:使字符失去原来的含义。可以从两方面来理解:
1,去掉字符的特殊含义。
比如上文中的单引号和双引号,它们在 Python 中被“特别地”用于定义字符串常量。如果我们想使用其“原本”含义,就可以在前边使用 \ 来转义。
其他可以转义的特殊字符为:
转义字符串 | 字符特殊含义 | 转义后的含义 |
---|---|---|
\' | 用于定义字符串常量 | 单引号字符 |
\" | 用于定义字符串常量 | 双引号 |
\newline | 换行 | 取消换行,表示多行 |
\\ | 转义其他字符 | 斜杠 |
通常,在源码中输入换行,代表一个语句的结束。这可能会引起语法错误:
File "<stdin>", line 1
print('a
^
SyntaxError: EOL while scanning string literal
如果需要,这时候可以使用 \ 对换行符进行转义,以表明这是一个多行语句:
... b\
... c')
abc
转义字符(\)本身也可以被转义:
hello backslash \
2,为字符赋予特殊含义
我们使用的键盘上的某些按键具有特殊功能,无法直接用单个字符来表示,如果想要输出这些按键,可以对其他普通字符进行转义。
比如常用的 Tab 按键代表制表符,可输出 4 个空格。我们可以对字符 t 进行转义,来表示 Tab。
Tab Space
其他可以转义为特殊用途的字符举例如下:
转义字符串 | 含义 |
---|---|
\a | ASCII Bell 字符,响铃 |
\b | 退格 |
\n | 换行 |
\r | 回车 |
Python 中还包含另外两种字符:裸(raw)串和三引用字符串。1,裸串在字符串常量之前添加 r 或 R,就形成了一个裸串。它表示不对其中的字符做任何转义,原原本本地按字面意思处理。
foo
bar
foo\nbar
2,三引用字符串
除了使用单引号和双引号来定义常量字符串,Python 还支持使用三引号(''' 或 """)来定义常量字符串。
This string has a single (') and a double (") quote.
在三引号字符串中,单引号、双引号和换行符保留字面意思,其他转义规则仍生效。
因此,可以用三引号来定义多行字符串常量。
line 1
line 2
line3
除此之外,三引号字符串还可以用于代码注释。
【Boolean类型】
Python 3 提供了 Boolean 数据类型。该类型的对象取值为:True 或 False。
<class 'bool'
><class 'bool'>
在 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 还提供了其他重要和易用的“高级”数据类型,我们会在后续的文章中陆续学习。
realpython.cn 正在翻译《RealPython 基础教程》,敬请关注!