如果你不使用这个库,你在Python中的编码方式是错误的!

97 阅读2分钟

简介

从Python 3.5开始,我们有了这个神奇的库,它建立在Python内部,就是typing 库。我们无法涵盖整个库,但应用帕累托原则(80-20法则),我将尝试涵盖该库的几个重要部分。

我们把它和一个强大的类型检查库mypy 一起使用。

我们将简要地讨论以下主题

  • 基本变量
  • 列表
  • 词典
  • 函数

让我们开始吧

IDE设置

请为VSCode安装以下扩展程序

[MyPy]

类型化

变量

int_typed:int = 4 float_typed:float = 1.2 string_typed:str = "hello"

让我们看看如果我们试图给它们分配一个不同的值会发生什么。

Int Error

列表

要了解更多关于列表的信息,你必须先了解Sequence

序列

在 Python 中,序列是一个有序集合的通用术语。在 Python 中有几种类型的序列,以下三种是最重要的。

Lists

Lists 是最通用的序列类型。一个列表的元素可以是任何对象,而且列表是可变的--它们可以被改变。元素可以被重新分配或移除,新的元素也可以被插入。

from typing import List
int_typed_list:List[int] = []

List
对类型错误的呼喊

但是,但是,但是在TypeScript ,如果我们想要动态数组,我们有any 关键字。

是的,金色的Any 甚至在这里也存在

from typing import Any, List int_typed:int = 4 float_typed:float = 1.2 string_typed:str = "hello" int_typed_list:List[int] = [] int_typed_list.append(int_typed) any_typed_list: List[Any] = []
any_typed_list.append(int_typed)
any_typed_list.append(string_typed)
any_typed_list.append(float_typed)
any_typed_list.append(int_typed_list)

Power of any
没有喊叫🤫

词典

对于这一部分,图片比文字更有说服力

from typing import Dict x: Dict[str, int] = {'followers': 1110} x['abc'] = 123 x.keys() x.values()

Overall
如果我们在代码中定义,它就会读出键,并帮助我们自动完成。

Keys
现在我们知道keys() ,返回一个列表。str

Values
现在我们知道values() ,返回一个列表。int

函数

我最喜欢的函数的定义如下图所示。

Function

def get_avg(num1:int, num2:int) -> float: return (num1+num2)/2 get_avg(12,9)

Function shouts
函数呼喊

当我们需要自定义类来保存和使用我们的数据时,我们可能需要一个解决方案。那么我们可以类似于这样

import math as m class Vector: def __init__ (self, x:float,y:float) -> None: self.x = x self.y = y def calculate_magnitude(self) -> float: return m.sqrt(m.pow(self.x,2)+ m.pow(self.y,2)) v = Vector(1,1)

Vector Class

你会再次得到美丽的自动完成的细节 💫

结论

正如图中所说,巨大的力量伴随着巨大的责任。
Python的动态类型让我们很容易开始学习Python,但同时也增加了无意中产生bug的机会。

在Python 3.9中,类型化变得更好,我希望随着我们的进步,它变得越来越好。

小的变化可以对代码产生巨大的影响,所以请开始使用类型、MyPy并感到安全。