本文目录导读:

在 Python 中,快速判断变量类型主要有以下几种实用方法,我按推荐顺序排列:
最常用:type() 函数
# 基本用法
x = 42
print(type(x)) # <class 'int'>
# 直接比较类型
if type(x) == int:
print("是整数类型")
# 判断是否是特定类型
if type(x) in [int, float]:
print("是数字类型")
推荐:isinstance() 函数
# 推荐使用,支持继承关系
x = 42
# 判断单个类型
print(isinstance(x, int)) # True
print(isinstance(x, str)) # False
# 判断多个类型(元组)
print(isinstance(x, (int, float))) # True
# 判读自定义类
class Animal:
pass
class Dog(Animal):
pass
dog = Dog()
print(isinstance(dog, Animal)) # True(推荐isinstance的原因)
快速查看:.__class__ 属性
x = 3.14 print(x.__class__) # <class 'float'> print(x.__class__.__name__) # 'float'
强制类型检查:assert 断言(调试用)
def process_number(n):
assert isinstance(n, (int, float)), f"期望数字类型,得到{type(n)}"
return n * 2
# process_number("abc") # 会触发AssertionError
类型注解(Python 3.6+)
# 声明时标注类型(不会自动检查,但IDE会有提示)
def add(x: int, y: int) -> int:
return x + y
# 使用变量时标注
n: int = 42
value: str = "hello"
实战技巧
判断常见类型的最佳实践:
# 判断是否可调用
callable(print) # True
# 判断是否为None
x = None
x is None # True(标准写法)
type(x) is type(None) # True(绕弯写法)
# 判断容器类型
from collections.abc import Iterable
def process(data):
if isinstance(data, str):
print("处理字符串")
elif isinstance(data, (list, tuple)):
print("处理列表/元组")
elif isinstance(data, dict):
print("处理字典")
elif isinstance(data, Iterable):
print("其他可迭代对象")
快速记忆口诀:
- Type vs isinstance:类型判断用
isinstance,绝对比type()更准确 - None 判断:永远用
is None,不要用== None - 类型错误:用
try-except而不是先判断类型
# 更好的做法:异常处理优于类型检查
def safe_divide(x, y):
try:
return x / y
except ZeroDivisionError:
return "除数不能为零"
except TypeError:
return "参数类型错误"
最后的小建议:日常开发中,isinstance() 是最实用的选择,配合 type(x).__name__ 获取类型名用于调试。