讨论/综合讨论/Python的答案验证也开始检查类型了吗?/
Python的答案验证也开始检查类型了吗?

以前返回迭代器或生成器也能通过的题目现在需要返回列表了,以前返回None也可以通过False的题目,现在必须返回bool相关类型了。

对于Python来说,这样更好吗?

展开讨论
typingMonkey发起于 2020-02-26
最近编辑于 2020-02-26

我觉得类型检查没有问题,既然函数已经声明了是什么类型,就应该按照对应的类型返回,要不然声明的类型还有什么用呢?连 mypy 都过不了。如果要返回包含 Nonebool ,那么就应该声明 Optional[bool];如果要返回生成器,那么就应该声明 Iterable

以前自己写就因为这种情况吃亏:
函数声明返回的是 List ,但是却返回了生成器,而外部有两处使用的地方,导致第一次遍历没有问题,第二次就没有可遍历的元素。
这种情况我单步调试才找出来,如果看代码,还需要进去函数内部看,甚至很快就会忘记两者的关联。既然函数已经抽出去了,那么就应该是保证声明类型和真实类型一致,管好自己的函数。
如果有道题入参声明是 List ,让你反转之后再返回,你相信传入的就是 List ,直接在原有数组上进行操作,这时候传入了迭代器不就炸了。既然你相信了入参的类型,那么也应该保证返回的类型也一致。函数签名是和他人交流的桥梁,不是每个人都有时间进入函数内部看返回的真实类型的。

4
展开全部 3 讨论