Python 基本数据类型介绍
“ 数据是业务的核心,任何编程语言都要支持各种数据类型。我们一起来学习一下 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
>>> 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 | 回车 |
>>> print('foo\nbar')
foo
bar
>>> print(r'foo\nbar')
foo\nbar
>>> 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 还提供了其他重要和易用的“高级”数据类型,我们会在后续的文章中陆续学习。