我在Python 3.5中练习使用类型提示。我的一个同事使用typing.Dict
:
import typing
def change_bandwidths(new_bandwidths: typing.Dict,
user_id: int,
user_name: str) -> bool:
print(new_bandwidths, user_id, user_name)
return False
def my_change_bandwidths(new_bandwidths: dict,
user_id: int,
user_name: str) ->bool:
print(new_bandwidths, user_id, user_name)
return True
def main():
my_id, my_name = 23, "Tiras"
simple_dict = {"Hello": "Moon"}
change_bandwidths(simple_dict, my_id, my_name)
new_dict = {"new": "energy source"}
my_change_bandwidths(new_dict, my_id, my_name)
if __name__ == "__main__":
main()
他们两个都工作得很好,似乎没有什么区别。
在typing.Dict
和dict
之间,我应该在程序中使用哪一个?
使用普通的
typing.Dict
和dict
没有实际的区别,不但是,
typing.Dict
是一个Generic type,它允许您指定键的类型和值也,使其更灵活:因此,很可能在项目生命周期的某个时刻,您希望更精确地定义dictionary参数,此时将
typing.Dict
扩展到typing.Dict[key_type, value_type]
比替换dict
要小得多。您可以在这里使用^{} 或^{} 类型使其更通用;因为您的函数不需要改变映射,所以我将使用
Mapping
。一个dict
是一个映射,但是您可以创建其他同样满足映射接口的对象,并且您的函数可能仍然可以使用这些对象:现在您清楚地告诉这个函数的其他用户,您的代码实际上不会改变传入的
new_bandwidths
映射。实际的实现只需要一个可打印的对象。这可能是一个测试实现,但是如果您使用
new_bandwidths: typing.Any
,您的代码将继续工作,因为Python中的任何对象都是可打印的。相关问题 更多 >
编程相关推荐