- Python 的数字类型:我们通常使用的整数、浮点数等。
- Unicode 字符:计算机中表示文字和符号的编码标准。
- 数字字符与数字类型之间的转换:如何将表示数字的字符串(如
'5')转换成真正的数字(如5),反之亦然。
Python 的数字类型
Python 提供了多种内置的数字类型,用于进行数学运算。

| 类型 | 名称 | 描述 | 示例 |
|---|---|---|---|
int |
整型 | 表示整数,没有大小限制(仅受内存限制)。 | 10, -5, 0 |
float |
浮点型 | 表示带有小数点的数字,基于 IEEE 754 标准。 | 14, -0.001, 0 |
complex |
复数 | 表示复数,由实部和虚部组成,虚部以 j 或 J
| |
bool |
布尔型 | True 和 False 的子类,本质上也是整数 (True 是 1, False 是 0)。 |
True, False |
这些是 Python 的核心数据类型,它们直接参与数学运算,而不是字符。
# 整型 a = 10 print(type(a)) # <class 'int'> # 浮点型 b = 3.14 print(type(b)) # <class 'float'> # 数学运算 print(a + b) # 13.14
Unicode 与数字字符
Unicode 是一个字符集,它为世界上几乎所有的字符(包括字母、数字、标点、表情符号等)都分配了一个唯一的数字码点。
当我们谈论“数字 Unicode”时,通常指的是代表数字的字符在 Unicode 中的编码。
- 数字字符:像
'0','1','2'...'9'这些都是字符,在 Python 中,它们属于str(字符串) 类型。 - Unicode 码点:每个字符都有一个唯一的数字码点。
- 字符
'0'的 Unicode 码点是U+0030(十进制是48)。 - 字符
'1'的 Unicode 码点是U+0031(十进制是49)。 - 字符
'9'的 Unicode 码点是U+0039(十进制是57)。
- 字符
在 Python 中,可以使用 ord() 函数获取一个字符的 Unicode 码点,使用 chr() 函数根据码点获取对应的字符。

# 获取字符 '5' 的 Unicode 码点
char = '5'
code_point = ord(char)
print(f"字符 '{char}' 的 Unicode 码点是: {code_point}") # 53
# 使用 chr() 函数根据码点 53 获取字符
recovered_char = chr(code_point)
print(f"码点 {code_point} 对应的字符是: '{recovered_char}'") # '5'
重要区别:
'5'(字符串):这是一个字符,你不能用它做数学计算,'5' + '5'会得到'55'(字符串拼接)。5(整数):这是一个数字,你可以用它做数学计算,5 + 5会得到10。
数字字符与数字类型的转换
这是编程中最常见的操作之一,当你从文件、网络或用户输入中读取数据时,通常得到的是字符串,即使它们看起来像数字,你需要将它们转换成真正的数字类型才能进行计算。
字符串 -> 数字
使用内置的 int() 和 float() 函数。
# 字符串转整数
str_num = "123"
int_num = int(str_num)
print(f"类型: {type(int_num)}, 值: {int_num}") # <class 'int'>, 123
# 字符串转浮点数
str_float = "45.67"
float_num = float(str_float)
print(f"类型: {type(float_num)}, 值: {float_num}") # <class 'float'>, 45.67
# 如果字符串无法转换,会抛出 ValueError
try:
int("hello")
except ValueError as e:
print(f"转换失败: {e}") # invalid literal for int() with base 10: 'hello'
数字 -> 字符串
使用内置的 str() 函数。
# 整数转字符串
num_int = 789
str_from_int = str(num_int)
print(f"类型: {type(str_from_int)}, 值: {str_from_int}") # <class 'str'>, '789'
# 浮点数转字符串
num_float = 3.14159
str_from_float = str(num_float)
print(f"类型: {type(str_from_float)}, 值: {str_from_float}") # <class 'str'>, '3.14159'
Unicode 字符 -> 数字
如果一个 Unicode 字符代表一个数字(如 '7'),你可以先将其转换为字符串(它本身就是字符串),然后再转换为数字。
# Unicode 字符 '7' (本质上是字符串 '7')
unicode_char = '7'
# 1. 直接转换 (因为字符类型就是 str)
number = int(unicode_char)
print(f"字符 '{unicode_char}' 转换为数字: {number}") # 7
# 2. 获取码点再转换 (通常不这样做,但可以展示过程)
code_point = ord(unicode_char) # 得到 55
# 你不能直接用 chr(code_point) 转换,需要先处理
# 这说明直接对字符进行 int() 转换是更直接的方式
总结与关键点
| 概念 | Python 类型 | 示例 | 用途 |
|---|---|---|---|
| 数字 | int, float, complex |
10, 14 |
数学计算、逻辑判断 |
| 数字字符 | str |
'1', |
显示、存储、文本处理 |
| Unicode 码点 | int |
49 (字符 '1' 的码点) |
字符的底层表示,用于字符集操作 |
核心要点:
- 类型不同:
5(数字) 和'5'(字符串/字符) 是完全不同的东西,前者用于计算,后者用于表示文本。 - 转换是桥梁:
int('5')和str(5)是连接这两个世界的桥梁,在处理外部数据时至关重要。 - Unicode 是基础:字符串
'5'在内存中存储的是其 Unicode 码点U+0035,Python 的str类型是对 Unicode 的抽象,让你可以方便地操作字符,而无需关心其底层编码(UTF-8, UTF-16 等)。 - 数字的 Unicode 表示:除了
0-9,Unicode 还包含其他数字字符,- 罗马数字: (U+2160), (U+2161)
- 带圈数字: (U+2460), (U+2461)
- 上标/下标数字: (U+00B2), (U+2083)
- 这些字符也可以用
ord()获取码点,但它们不能直接用int()转换成普通的十进制整数。
# 其他数字字符示例
print(ord('①')) # 9312 (U+2460)
print(ord('²')) # 178 (U+00B2)
# 尝试转换带圈的数字,会失败
try:
int('①')
except ValueError as e:
print(f"转换失败: {e}") # invalid literal for int() with base 10: '①'
希望这个详细的解释能帮助你完全理解 Python 中数字和 Unicode 的关系!
