使用Plain
typing.Dict和
dictNo之间没有真正的区别。
然而,
typing.Dict是一个泛型类型 ,让你指定键和值的类型_太多_ ,使之更加灵活:
def change_bandwidths(new_bandwidths: typing.Dict[str, str],user_id: int,user_name: str) -> bool:
因此,很可能是在项目生命周期中的某个时候,您希望更精确地定义字典参数,在这一点上,扩展
typing.Dict到
typing.Dict[key_type,value_type]而不是替换是“较小”的更改
dict。
您可以通过在此处使用
Mapping或
MutableMapping类型来使其更通用。由于您的函数不需要
更改
映射,因此我坚持使用
Mapping。A
dict是一个映射,但是您可以创建也满足映射接口的其他对象,并且您的函数可能仍可以与那些对象一起使用:
def change_bandwidths(new_bandwidths: typing.Mapping[str, str],user_id: int,user_name: str) -> bool:
现在,您清楚地告诉此功能的其他用户,您的代码实际上不会 更改
new_bandwidths传入的映射。
您的实际实现只是期望一个可打印的对象。那可能是一个测试实现,但是就目前而言,如果使用
new_bandwidths:typing.Any,您的代码将继续工作,因为Python中的任何对象都是可打印的。



