python typing 类型注解的基本使用

1、简介

typing 模块为 Python带来了类型提示和类型检查的能力。它允许开发者在代码中添加类型注解,提高代码的可读性和可维护性。尽管Python 是一种动态类型语言,但类型注解能让开发者更清晰地了解函数和变量的预期类型。

2、基本类型注解

2.1 类型别名

typing 模块中有多种内置的类型别名,比如 ListTupleDict 等,可以用于注解变量和函数的预期类型。

from typing import List

def process_numbers(numbers: List[int]) -> int:
    return sum(numbers)

2.2 Union 类型

Union 允许参数接受多种不同类型的数据

from typing import Union

def double_or_square(number: Union[int, float]) -> Union[int, float]:
    if isinstance(number, int):
        return number * 2
    else:
        return number ** 2

2.3 Optional 类型

Optional 表示参数可以是指定类型或者 None

from typing import Optional

def greet(name: Optional[str]) -> str:
    if name:
        return f"Hello, {name}!"
    else:
        return "Hello, World!"

3、类型变量和泛型

3.1 类型变量

TypeVar 允许创建泛型函数和类

from typing import TypeVar, List

T = TypeVar('T')

def get_first_element(items: List[T]) -> T:
    return items[0]

first_element = get_first_element([1, 2, 3])  # 推导类型为 int

3.2 泛型函数

CallableSequence 等泛型类型的使用。

from typing import Callable, Sequence

def apply_function(
    func: Callable[[int, int], int],
    numbers: Sequence[int]
) -> List[int]:
    return [func(num, num) for num in numbers]

4、类型注解的应用

4.1 函数参数和返回值的注解

def add(a: int, b: int) -> int:
    return a + b

4.2 类型注解的类成员

class MyClass:
    value: int

    def __init__(self, initial_value: int) -> None:
        self.value = initial_value

    def double_value(self) -> int:
        return self.value * 2

4.3 生成器函数注解

from typing import Generator

def generate_numbers(n: int) -> Generator[int, None, None]:
    for i in range(n):
        yield i

5、类型检查工具

使用mypy静态类型检查工具进行类型检查。

 mypy your_program.py

6. 注意事项

  • 静态类型检查工具辅助,不会影响Python的动态特性,可以选择性地使用类型注解。
  • 类型注解应该让代码更易于理解,但不应使代码变得过于复杂。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值