Python 中,同一变量名在不同时间可绑定不同类型的对象,但每个对象在运行时都有确定的类型。type() 可查看类型;int 与 float 混合运算时常发生隐式提升,字符串与数字拼接则须显式转换。本节归纳常用内置类型、隐式与显式类型转换,以及混用字符串与数值时的注意点。
常用数据类型一览
| 类型 | 说明 | 示例 |
|---|---|---|
int | 整数 | 10、-3 |
float | 浮点数 | 3.14、1.5e2 |
str | 字符串 | "hello" |
bool | 布尔 | True、False |
list | 列表,可修改 | [1, 2, 3] |
tuple | 元组,不可修改 | (1, 2, 3) |
dict | 字典(键值对) | {'k': 'v'} |
set | 集合,元素唯一且无序 | {1, 2, 3} |
NoneType | 空值 | None |
用 type() 查看类型
若需确认某表达式的类型,可使用内置函数 type():
print(type(10)) # <class 'int'>
print(type(3.14)) # <class 'float'>
print(type("hi")) # <class 'str'>
print(type(True)) # <class 'bool'>
print(type([1, 2])) # <class 'list'>
print(type(None)) # <class 'NoneType'>隐式类型转换
int 与 float 参与同一算术表达式时,Python 通常将 int 提升为 float,使结果保留小数部分:
x = 10 # int
y = 2.5 # float
print(x + y) # 12.5,结果是 float
print(type(x + y)) # <class 'float'>显式类型转换
需要指定目标类型时,可调用 int()、float()、str()、bool() 等构造函数:
print(int(3.9)) # 3,截断小数部分,非四舍五入
print(int("42")) # 42,数字字符串转整数
print(float(2)) # 2.0
print(str(123)) # '123'
print(bool(0)) # False
print(bool("")) # False(空字符串为假)
print(bool("hi")) # True(非空字符串为真)转换时的注意点
float转int截断小数:int(3.9)为3,不是4。- 无法解析的字符串转数字将抛出异常:
int("abc")引发ValueError。 int转str得到文本:str(1) + "2"为"12";而1 + "2"将引发TypeError。
字符串与数字混用
使用 + 连接字符串与数字时,须先将数字转为字符串,或改用 print 的逗号分隔实参(由 print 负责转换为字符串并插入空格):
# 下面这句会报错:TypeError,不能 int 直接加 str
# print("总数是 " + 10)
# 正确做法:先转成字符串
print("总数是 " + str(10)) # 总数是 10
print("总数是", 10) # 总数是 10练习:输入与加倍
编写小程序:用 input 读入一个数(返回值类型为 str),转为 float 后乘以 2 并输出。该练习体现从终端读入的文本须先转换再参与算术运算。
本节说明了 Python 常用内置类型及类型转换规则。下一节介绍输入与输出:print、input 及与类型转换的配合。