Typing 基本类型
2026/3/20大约 3 分钟
Typing 基本类型
概述
Typing 的基本类型,是可以直接使用 python 内置的数据类型,无需额外的导入(Any 类型除外), 是最基本的类型提示,也是使用的最频繁的类型
int
int 是 python 中的整数类型
a: int = 1
# b: int = 5.0 类型检查器会警告,因为5.0是float
def add_numbers(a: int, b: int) -> int:
return a + b
result = add_numbers(a, 3) # 正确
# result = add_numbers(a, 5.0) 类型检查器会警告,因为5.0是float
float
float 是 python 中的浮点数类型
a: float = 10.0
def divide(a: float, b: float) -> float:
return a / b
result = divide(a, 3.0) # 正确
result = divide(10, 3) # 也正确,int会自动提升为float
str
str 是 python 中的字符串类型
str_ :str = "Alice"
def greet(name: str) -> str:
return f"Hello, {name}!"
message = greet(str_) # 正确
# message = greet(123) # 类型检查器会警告
bool
bool 是 python 中的布尔类型
bool_ :bool = True
def is_even(num: int) -> bool:
return num % 2 == 0
check = is_even(4) # 返回True
bytes
bytes 是 python 中的字节类型
bytes_ :bytes = b'Hello, World!'
def reverse_bytes(data: bytes) -> bytes:
return data
reversed_bytes = reverse_bytes(bytes_)
tuple
提示
在 Python 3.9+ 以后, python 原生的容器数据结构 list,dict,set,tuple 可以等同于 typing 中的 List,Dict,Set,Tuple 等类型,可以进行泛型约束,无需再导入 typing 模块
但是在此之前的 python 版本中,原生的容器类型只能做简单的类型标注,表示该值为一个容器类型。
tuple 是 python 中的元组类型
def get_coordinates_old(data:tuple) -> tuple:
return data
# Python 3.9+ 以后
def get_coordinates_new(data:tuple[float, float]) -> tuple[float, float]:
return data
lat, lon = get_coordinates_old(("1",0.1))
lat, lon = get_coordinates_new((0.1,0.2))
list
list 是 python 中的列表类型
def reverse_list_old(items: list) -> list:
return items
# Python 3.9+ 以后
def reverse_list_new(items: list[str]) -> list[str]:
return items
numbers = [1, "2", 3, 4]
reversed_numbers = reverse_list_old(numbers)
strings = ["a", "b", "c", "d"]
reversed_strings = reverse_list_new(strings)
set
set 是 python 中的集合类型
def reverse_set_old(items: set) -> set:
return items
# Python 3.9+ 以后
def reverse_set_new(items: set[str]) -> set[str]:
return items
numbers = {1, "2", 3, 4}
reversed_numbers = reverse_set_old(numbers)
strings = {"a", "b", "c", "d"}
reversed_numbers = reverse_set_new(strings)
dict
dict 是 python 中的字典类型
def reverse_dict_old(items: dict) -> dict:
return items
# Python 3.9+ 以后
def reverse_dict_new(items: dict[str, str]) -> dict[str, str]:
return items
numbers = {1: "one", 2: "two", 3: "three", 4: "four"}
reversed_numbers = reverse_dict_old(numbers)
strings = {"a": "one", "b": "two", "c": "three", "d": "four"}
reversed_strings = reverse_dict_new(strings)
Any
Any 是 Typing 模块中的一个类型,用于表示任意类型,在使用中需要进行导入
注意
Any 类型在实际开发中,比较少用,因为类型检查器不会对 Any 类型进行检查,当明确知道类型时,尽量使用具体的类型,而不是使用 Any 类型。
from typing import Any
def print_any(value: Any) -> None:
print(value)
# Python 3.9+ 以后
def dict_any(value: dict[str,Any]) -> dict[str,Any]:
return value
print_any(123)
print_any("hello")
print_any(True)
print_any([1,2,3])
dict_any({"name":"Mike","age":18})
None
None 是 Python 中的一个特殊值,它表示一个空对象或者一个不存在的对象。一般开发中不对 None 进行类型标注。