【发布时间】:2020-03-10 10:28:33
【问题描述】:
我有一个签名方法如下:
def get_users_for_survey(survey_id: (int, str),show_deleted_users: bool = False) -> list:
pass
我已经避开了方法体,因为我只对survey_id 的类型提示部分感兴趣?看起来这意味着它可能是 int 或 str。我想如果那是意图,那么它应该是survey_id:Union(int,str)。 PyCharm 并不反对。你认为我错过了 PEP 484 中的某些内容吗?我不认为它是一个元组。
编辑根据此处提供的答案,这只是一个错误。现在我知道这个错误的根源是什么。 在同样的方法下一行是:
if survey_id and isinstance(survey_id, (int, str)):
所以你在 isinstance 中看到如果你想适应多种类型,这是一个有效的语法。此方法的作者认为这也是类型提示的有效语法。这是一个参考: Python isinstance with multiple types
【问题讨论】:
-
与普遍预期相反,Python 的“类型提示”只是注解。它们实际上可以是任何东西。他们的意思是你想让他们表达的意思。含义:它不必以任何方式“有效”。