RealPython 基础教程:基本数据类型

 数据是业务的核心,任何编程语言都要支持各种数据类型。我们一起来学习一下 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)
<class 'int'> 
>>> type(0b1011)
<class 'int'> 
>>> type(0o1011)
<class 'int'> 
>>> type(0x1011)
<class 'int'>

【浮点数】
float 是 Python 中实现浮点类型数字的数据类型。float 类型的数值通过小数点(.)来指定。也可以在数值后边追加字符 E(或 e)来使用科学计数法表示一个浮点数。

>>> 4.2
4.2 
>>> type(4.2)
<class 'float'> 
>>> 4.
4.0 
>>> .2
0.2 
>>> 
>>> 
>>> .4e7
 4000000.0 
>>> type(.4e7)
<class 'float'> 
>>> 4.2e-4
0.00042

几乎所有的平台都是以 64 位双精度的方式来表示一个 Python 浮点数。

因此,最大的浮点数接近于 1.8*10308。超过此值的浮点数将被表示为 inf:

>>> 1.79e308
1.79e+308 
>>> 1.8e308
inf

最接近 0 的非 0 数的值为 5.0*10-324。任何接近于此值的数字都被解释为 0:

>>> 5e-324
5e-324 
>>> 1e-324
0.0

浮点数在内部是以二进制小数来表示的,大多数十进制小数无法通过二进制的方式来精确表达。所以,多数情况下,浮点数的内部表示和真实值之间是存在细微差距的,这个“细微”可以忽略不计。


【复数】

Python 原生支持复数。

复数以 <实部>+<虚部>j 的方式来指定。

>>> 2+3j
(2+3j) 
>>> type(2+3j)
<class 'complex'>

【字符串】

字符串是指一个包含字符数据的序列。Python 底层以 str 类来表示字符串。

我们可以使用成对的单引号或双引号来表示字符串常量。

>>> 'hello world'
'hello world' 
>>> type('hello world')
<class 'str'> 
>>> 
>>> "hello world"
'hello world' 
>>> type("hello world")
<class 'str'>

字符串可以包含任意多个字符,也可以为不包含任何字符的空字符串。

>>> ''
''

如果你想在字符串中包含引号字符,最简单的方法是:在一种引号对中包含另一种引号字符:

>>> '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('a
  File "<stdin>", line 1
    print('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')
foo
bar 
>>> 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 1 
line 2 
line3
除此之外,三引号字符串还可以用于代码注释。


【Boolean类型】

Python 3 提供了 Boolean 数据类型。该类型的对象取值为:True 或 False。

>>> type(True)
<class 'bool'> 
>>> type(False)
<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 还提供了其他重要和易用的“高级”数据类型,我们会在后续的文章中陆续学习。

敬请关注!


欢迎关注本站公众号【Python学与思】

python 学与思