Python中对代码使用类型标注

 

1.为什么要对Python代码进行类型标注?

python作为一种动态类型语言,这使得程序不需要指定变量的类型;python在构建大型项目上一直遭人诟病,除了自身性能在个别领域不尽如人意外,动态类型的语言特点也使得python并不适合构建大型项目。

构建大型项目对于python来说是一个技术可行但工程上困难重重的事情,设想你编写了一个函数,定义了若干个参数,期初你还记得这些参数的类型是什么,但天长日久,写了几万行代码之后你还会记得这个函数的参数最初都是如何定义的么?倘若你自己已经遗忘,又如何要求其他人能够读懂并维护你的代码呢?其他强类型语言诸如C++, java 在定义变量时必须指定其类型,因此在维护代码方面,及时缺少注释也仍然可以通过阅读代码来获取变量的信息,而python不可以,如果python开发人员不注意变量命名规则,也不喜欢写注释,相信我,python的代码真的很难理解和维护,尤其在使用了一大堆诸如装饰器等特性之后,理解起来更是难上加难。

但python创始人Guido van Rossum在python3.5中引入了一个类型系统,它允许开发人员指定变量类型,主要作用是便于开发维护代码,供IDE和开发工具使用,对代码运行不产生任何影响,运行时会过滤类型信息。

2.类型标注的使用

      1)使用:语句将信息附加到变量或函数参数中

       2) ->运算符用于将信息附加到函数/方法的返回值中

例:

def add(x: int, y: int)->int:
    return x + y


print(add(3, 4.3))

通过类型标注,你很容易就了解了使用add函数时的参数要求以及函数返回值的类型,不需要添加其他注释,而这并没有增加太多工作量。尽管类型标注注明了参数y是int类型,但实际调用函数时仍然可以传入float数据,因为类型标注仅仅被当做注释来处理,而不是强制的类型要求, python并没有据此进行类型推断和验证,也没有使用类型信息来优化生成的字节码以获得安全性或性能,一言以蔽之,类型标注就是一个另类的代码注释。

3.类型标注的优点

1)易于理解代码

2)易于重构

class Stu:
    def __init__(self, name: str, age: int):
        self.name = name
        self.age = age


def out_stu(stu: Stu):
    print(stu.name, stu.age)

stu = Stu('小明', 14)
out_stu(stu)

3)易于使用库

Python中对代码使用类型标注_第1张图片

大多数编辑器都提供了代码提示功能,由于python是动态类型语言,有些代码,无法确定变量的类型,这时他们就无法提供代码提示,这一点在编写函数尤为明显,由于函数的参数具体是什么类型的,只有在执行阶段才能确定,因此编辑无法在你编写函数时为你提供代码提示功能,但加了类型标注之后就变成了可能。由于已经加了类型标注,编辑器知道参数string是str类型,因此在编写代码时就可以为我们提供字符串可用的方法列表,这样可以加快代码编写的速度。

你可能感兴趣的:(Python学习)