Python类型提示 - 如何提示可选参数的默认值不是None?
问题描述:
我正在尝试在我的Python 3代码中实现PEP-484。而在下面的练习问题,它看起来像工作:Python类型提示 - 如何提示可选参数的默认值不是None?
def fetch_n(what: str, n="all") -> List[obj]:
query = "some sql string"
if n == "all":
# do the fetching
elif isinstance(n, int):
query = query + " LIMIT ?"
# do the fetching
else:
raise ValueError
是否有可能暗示n
在函数定义是 - const str or int
?如果是的话,该怎么做?
我读了cheat-sheet,目前我使用的是from typing import Optional
和n: Optional[int]
,但它不能按照需要工作。
答
Optional[X]
仍然只是一种类型的提示 - 它意味着X or None
。也许在这里你需要一个Union
来代替:
def fetch_n(what: str, n: Union[str, int] = "all") -> List[obj]:
...
联盟在这里是正确的。 +1 –