【python 类型注解详解】
在 Python 中,类型注释(Type Annotations)允许你为变量、函数参数和返回值指定类型信息。预定义变量选项通常指的是在代码中预先定义一些可能的变量值,并在类型注释中使用这些预定义的值。
1. 使用 Literal
类型
Literal
类型允许你指定一个变量只能是某些特定的字面量值。这在处理枚举值或预定义选项时非常有用。
from typing import Literal
# 预定义的选项
Option = Literal["option1", "option2", "option3"]
def process_option(option: Option):
...
process_option("option1")
process_option("option4")
2. 使用 Enum
类型
Enum
类型是另一种常见的预定义变量选项的方式。它允许你定义一组命名的常量。
from enum import Enum
class Options(Enum):
OPTION1 = "option1"
OPTION2 = "option2"
OPTION3 = "option3"
def process_option(option: Options) -> None:
...
process_option(Options.OPTION1)
process_option('option1')
3. 使用 Union
类型
如果你有多个可能的类型,可以使用 Union
类型来指定变量可以是这些类型中的任何一个。
from typing import Union
# 预定义的选项
Option = Union[int, str]
def process_option(option: Option) -> None:
...
process_option(123)
process_option("option1")
4. 使用 TypedDict
类型
如果你需要处理预定义的字典结构,可以使用 TypedDict
类型。
from typing import TypedDict
class User(TypedDict):
name: str
age: int
role: Literal["admin", "user", "guest"]
def process_user(user: User) -> None:
...
user1: User = {"name": "Alice", "age": 30, "role": "admin"}
process_user(user1)
user2: User = {"name": "Bob", "age": 25, "role": "user"}
process_user(user2)
user3: User = {"name": "Charlie", "age": 20, "role": "guest"}
process_user(user3)
总结
-
Literal
: 用于指定变量只能是某些特定的字面量值。 -
Enum
: 用于定义一组命名的常量。 -
Union
: 用于指定变量可以是多个类型中的任何一个,也可以用 `|`, int | str | None。 -
TypedDict
: 用于定义预定义的字典结构。
这些类型注释工具可以帮助你在代码中更清晰地表达变量的预期值,并提高代码的可读性和可维护性。