类型注解基础

介绍

类型注解是一种给函数参数、返回值以及任何变量增加类型描述的技术,规范的注解可以大大提升代码可读性

举个例子,下面的代码没有任何类型注解

class Duck:
  """鸭子类
  :param color: 鸭子颜色
  """
  
  def __init__(self, color):
    self.color = color

  def quack(self):
    print(f"Hi, i am a {self.color} duck!")

def create_random_ducks(number):
  ducks = []
  for _ in number:
    color = random.choice(["yellow", "white", "gray"])
    ducks.append(Duck(color=color))
  return ducks

添加了类型注解后的代码

from typing import List
class Duck:
  def __init__(self, color: str): # 1
    self.color = color

  def quack(self) -> None: # 2
    print(f"Hi, i am a {self.color} duck!")

def create_random_ducks(number: int) -> List[Duck]: # 3
  ducks: List[Duck] = []   # 4
  for _ in number:
    color = random.choice(["yellow", "white", "gray"]) # 5
    ducks.append(Duck(color=color))
  return ducks
1.给函数参数加上类型注解
2.通过 -> 给返回值加上类型注解
3.你可以用typing模块的特殊对象List来标注列表成员的具体类型,注意,这里用的是[]符号
4.声明变量时,也可以为其加上类型注解
5.类型注解是可选的,非常自由,比如这里的color变量就没有加类型注解
typing是类型注解用到的主要模块,除了List以外,该模块内还有许多与类型有关的特殊对象,举例如下
Dict:字典类型,例如Dict[str,int]代表键为字符串,值为整型的字典
Callable: 可调用对象,例如Callable[[str,str], List[str]]表示接收两个字符串作为参数,返回字符串列表的可调用对象
TextIO:使用文本协议的类文件类型,相应的,还有二进制类型BinaryIO
Any:代表任何类型
posted @ 2022-09-07 15:03  我在路上回头看  阅读(58)  评论(0)    收藏  举报