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 及与类型转换的配合。