输入特殊参数的提示

问题描述 投票:0回答:1

考虑以下函数:

from datetime import date

def days_between(start_date: date, end_date: date) -> int:
    if start_date == "initial":
        start_date = date(2023, 9, 1)
    delta = end_date - start_date
    return delta.days 

开始日期的类型提示大部分都可以,但不涵盖传递

"initial"
的情况。这是唯一允许的字符串,你会如何表达它?

我想到的选项是:

  • start_date: date | str
    这似乎有点过分了
  • start_date: date | "initial"
    也许不错,但我还没有遇到过类似的事情
  • 无需更改,只需在文档字符串中添加描述即可

为了完整性,与静态类型检查的形式正确性相比,我更感兴趣的是如何向用户传达函数的使用。

python type-hinting
1个回答
1
投票

你应该使用

typing.Literal

from typing import Literal

def days_between(start_date: date | Literal['initial'], end_date: date) -> int:
    ...

从 python 3.8 开始包含此功能。

Literal
可用于向类型检查器指示带注释的对象具有与所提供的文字之一等效的值。

© www.soinside.com 2019 - 2024. All rights reserved.