首页 > 其他分享 >类型注解基础

类型注解基础

时间:2022-09-07 15:11:48浏览次数:61  
标签:color self 基础 ducks Duck 类型 注解

介绍

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

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

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:代表任何类型

标签:color,self,基础,ducks,Duck,类型,注解
From: https://www.cnblogs.com/weiweivip666/p/16665515.html

相关文章

  • Java 基础三、接口与内部类
    1.  在Java程序语言中,接口是对类的一种描述。例如Arrays类中sort方法声明可以对对象进行排序,但前提是对象所属的类必须实现Comparable接口。publicinterfaceComparab......
  • Ceph集群应用基础-CephFS文件存储
    在mgr1上安装ceph-mds服务,可以和其他服务器混用(如ceph-mon、ceph-mgr)root@mgr1:~#apt-cachemadisonceph-mdsroot@mgr1:~#aptinstallceph-md=16.2.10-1bionic把mgr......
  • PostgreSQL-数据类型3
    一、数组类型PostgreSQL允许将表的列定义为可变长度的多维数组。可以创建任何内置或用户定义的基本类型、枚举类型、复合类型、范围类型或域的数组。为了说明数组类型的......
  • Ceph集群应用基础-RGW对象存储
    部署radodgw服务,将mgr服务器部署为RGW主机aptinstallradosgw=16.2.10-1bionicceph-deploy--overwrite-confrgwcreatemgr1 直接浏览器访问,能访问到说明启动成功......
  • Ceph集群应用基础-块存储RBD
    块存储RBD基础创建RBD创建存储池,制定pg和pgp的数量,pgp是对存在于pg的数据进行组合存储,pgp通常等于pg的值cephosdpoolcreatemyrbd16464对存储池启用RBD功能ceph......
  • 第一天学习 html 基础
    1、web标准的构成: 《结构Structure》(对应html文件)、《表现Presentation》(对应css文件)和《行为Behavior》(对应js)三个方面2、骨架标签<html>//根标签<head></head>......
  • @Valid注解
    分类限制说明空和非空检查@Null限制只能为null@NotNull限制必须不为null@NotEmpty验证注解的元素值不为null且不为空(字符串长度不为0、集合大小不为......
  • python数据类型之元组Tuple
    1.元组Tuple说明元组是另一个数据类型,类似于List(列表)。元组用()标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表。Python的元组与列表类似,不同之......
  • SpringBoot使用自定义注解+AOP+Redis实现接口限流
    为什么要限流系统在设计的时候,我们会有一个系统的预估容量,长时间超过系统能承受的TPS/QPS阈值,系统有可能会被压垮,最终导致整个服务不可用。为了避免这种情况,我们就需要对......
  • SpringBoot常用注解
    SpringBoot常用注解1.@SpringBootApplicationspringBoot的基石,启动类@Configuration应许spring注册额外的bean或者导入其他配置类@EnableAutoConfiguration启用Sp......