默认为 None 的参数是否应该始终被类型提示为Optional[]? [重复]

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

比较这两个函数:

from typing import Optional

def foo1(bar: str = None) -> None:
    print(bar)

def foo2(bar: Optional[str] = None) -> None:
    print(bar)

Mypy 不会抱怨它们中的任何一个。那么

Optional[]
真的有必要吗?这两个声明之间有什么细微的区别吗?

python python-typing mypy
1个回答
17
投票

PEP-484 自原始答案编写以来已更新。 在现代 python 类型检查中,最好使

Optional
显式化。 引用 PEP 的话:

此 PEP 的过去版本允许类型检查器在默认值为 None 时采用可选类型,如以下代码所示:

def handle_employee(e: Employee = None): ...


这将被视为等同于:

def handle_employee(e: Optional[Employee] = None) -> None: ...


这不再是推荐的行为。类型检查器应该朝着要求明确可选类型的方向发展。

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