美文网首页野生技术宅协会
让你的Python代码拥有类型提示

让你的Python代码拥有类型提示

作者: 乐百川 | 来源:发表于2017-08-27 23:24 被阅读360次

    Python是一种动态类型语言,这意味着我们在编写代码的时候更为自由,但是与此同时IDE无法向静态类型语言那样分析代码,及时给我们相应的提示。为了解决这个问题,Python 3.6 新增了几个特性PEP 484PEP 526,帮助编辑器为我们提供更智能的提示。这些新特性不会影响语言本身,只是增加一点提示。当你使用比较智能的开发工具比如PyCHarm时,就会感觉到类型提示的方便之处。

    变量注解

    首先先看看变量注解。它的语法和某些类型后置的语言类似。

    # 变量注解
    a: int = 5
    b: bool = True
    f: float = 5.0
    s: str = "abc"
    

    声明类型之后,编辑器和IDE就会读取到这个类型注解,然后给予我们相应的提示。程序在运行的时候行为完全不变。

    如果是自己编写的类,也可以用作变量注解。

    class MyClass:
        def fun1(self):
            print("fun1")
    
    
    me: MyClass = MyClass()
    me.fun1()
    

    对于较复杂的内置类型、泛型、生成器、自定义类型等,需要引入标准库typing。对于更复杂的类型,请直接参考typing标准库文档

    from typing import TypeVar, Iterable, Tuple, Dict, List
    
    m: Dict[int, int] = {1: 1, 2: 2}
    t: Tuple[int, ...] = (1, 2, 3)
    l: List[int] = [1, 2, 3, 4]
    

    函数注解

    当使用Python编写复杂的函数时,我们常常为没有合适的提示而苦恼。函数注解可以帮助我们解决这个问题。

    def add(a: int, b: int) -> int:
        return a + b
    

    为函数添加注解之后,当我们调用这个函数的时候,编辑器就会给予对应的提示。当处理大型项目的时候,这个特性会很有用。

    函数注解保存在函数的__annotations__属性中,如果你准备编写程序读取它,可以使用这个属性。

    print(add.__annotations__)
    

    相关文章

      网友评论

        本文标题:让你的Python代码拥有类型提示

        本文链接:https://www.haomeiwen.com/subject/lmwidxtx.html