【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: 用于定义预定义的字典结构。

这些类型注释工具可以帮助你在代码中更清晰地表达变量的预期值,并提高代码的可读性和可维护性。

你可能感兴趣的:(python,开发语言,linux)