当 Python 函数/方法参数具有多个可能的类型提示时,正确的语法是什么?

问题描述 投票:0回答:2
import os

def scan(path) -> os.DirEntry :
   return os.scandir(path)

此函数的

path
参数的正确类型提示是什么?

根据文档

path可能是一个path-like对象。如果 path

bytes
类型(直接或 间接通过 PathLike 接口),name 的类型和 每个os.DirEntry
path
属性将是
bytes
;在所有其他方面 情况下,它们将是
str
类型。

因此,它可以是表示路径的

str
bytes
对象,也可以是实现
os.PathLike
协议的对象。我如何为类型提示编写这些可能性?

python type-hinting
2个回答
0
投票

你可以将这些可能性写成:

typing.Union[str, bytes, os.PathLike]

这在PEP 519中提到过。

...所有可接受的路径表示类型的联合...可以很容易地用

typing.Union[str, bytes, os.PathLike]
表示,希望用户会慢慢地只倾向于路径对象


0
投票

联合类型可以表示为

str | bytes | os.PathLike

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