Python学习:如何使用类型注解

问题

Python代码写起来很快,但阅读起来,就很抓狂,主要问题就是类型信息丢失,看到一个函数或方法,都不知道如何传递参数,该函数会返回什么结果。只有运气来,才可以看到类型信息。

方案

Python 3.6版本之后,新增了类型注解特性(type hint),用户标记函数参数和返回值的类型,该特性主要是给人和IDE用的,实际代码执行的时候,并不会有作用,即使传递不期望的类型,依然会执行。接下来,列绝一些常用的类型注解。

  • 单一类型注解
def add(x : int, y: int)  -> int:
    return x + y
  • 列表类型注解
from typing import List

def add(x : List[int], y: List[int])  -> List[int]:
    pass

class YourClass:
    pass

def print_your_classes(obj:List[YourClass]):
    pass
  • 多类型注解
from typing import Union

def add(x : Union[int,str], y: Union[int,str])  -> Union[int,str]:
    pass
  • 缺省值注解
def add(x : int = 0, y: int = 0)  -> int:
    pass

class YourClass:
    pass

def print_your_classes(obj: YourClass=None):
    pass 
  • 参数为函数的注解
from typing import Callable

def func_hint(call : Callable[[int,int],int])->int:
    pass
  • 对象方法返回自身的注解
class YourClass:
    def set(self, field:str, value:any)->'YourClass':
        return self

对象方法返回自身,不能直接使用类名,而是用类名的字符串形式。

  • 任意类型的注解
def add(x:any, y:any)->any:
    pass

默认情况下,注解相当于注释,只供IDE和人审视。也可以安装第三方库(mypy、pytype、pyre、pyright),通过命令行进行检查。

pip3 install mypy
python3 -m mypy --strict example.py

总结

自由,总会带来一定的弊端,Python因为是动态类型,学起来很简答,但也因为没有了类型信息,代码不好看懂。上面总结了,常用的几种类型注解,一般情况下够用了。使用新版本的Python时候,建议多用类型注解,因为Python代码量一旦上去了,阅读起来会很困难,类型注解会大大提高代码的可读性。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值