python类型注解_如何看待类型注解在 Python 中的前途?

我好喜欢python 的类型注解呀,感觉打了一扇新世界的大门。

第一点:自动补全

本来对于python 的IDE,对于一个函数的参数是不知道它是什么类型的,因此也不知道因该如何自动补全。比如:

def f(a):

return len(a)

b = f([1, 2, 3])

很多程序现阶段是无法自动的推断出a是str,b是int类型。如果加入了类型注解:

from typing import List, Union, Optional

def f(a: Optional[List[int]]) -> int:

return len(a)

b = f([1, 2, 3])

便可以正确的进行自动补全:

第二个好处是可以进行静态代码检查,可以极大程度上帮助你减少程序中的bug。

比如在这个程序中,a被标记为Optional,这表示a是可以是None。这样的话IDE就可以提醒你:Hi,对于一个可能为None的类型,在调用len前,你需要判断它是否为None

我在编程中经常因为这个查出来自己的很多程序错误和隐藏的bug。

比如:wow, 不能将整数和字符串连接emmm. 这里只是简写。我遇到的情况是a,b两个名字很长实在是太像了,没注意就判断错None的变量了,但是没关系mypy把我救了回来。

当然还有最重要的一点是type hint可以自动生成!张翼腾:vim为python自动添加函数参数类型​zhuanlan.zhihu.comzhihu-card-default.svg

对于程序:

def f(a, b) -> int:

if a is not None:

return len(a)

if b is not None:

return len(b)

return 0

f([1, 2, 3], [4, 5, 6])

f(None, None)

输入命令:RecordParameter

便可以自动的生成type hint:

from typing import Optional, List, Union

def f(a: Optional[List[int]], b: Optional[List[int]]) -> int:

"""

called number: 2

total time: 9.5367431640625e-07s

"""

if a is not None:

return len(a)

if b is not None:

return len(b)

return 0

f([1, 2, 3], [4, 5, 6])

f(None, None)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值