• Python面试题:解释 Python 中的类型提示(type hinting)


    Python 中的类型提示(Type Hinting)是一种在代码中提供关于变量类型的信息的机制,目的是提高代码的可读性和可维护性,并帮助开发者在编写代码时发现潜在的错误。类型提示在 Python 3.5 中引入,并在后续版本中得到了进一步的扩展和改进。

    以下是类型提示的基本概念和用法:

    1. 基本类型提示

    类型提示通过在变量声明或函数定义时指定变量的类型来实现。

    变量类型提示
    age: int = 25
    name: str = "Alice"
    

    在上面的例子中,age 被标注为 int 类型,name 被标注为 str 类型。

    函数类型提示
    def greet(name: str) -> str:
        return "Hello, " + name
    

    在这个函数中,参数 name 被标注为 str 类型,返回值也被标注为 str 类型。

    2. 复杂类型提示

    Python 还支持对复杂类型(如列表、字典和元组)进行类型提示,这通常需要使用 typing 模块中的泛型类型。

    列表类型提示
    from typing import List
    
    numbers: List[int] = [1, 2, 3]
    

    在这个例子中,numbers 被标注为包含 int 类型元素的列表。

    字典类型提示
    from typing import Dict
    
    person: Dict[str, int] = {"age": 25, "height": 170}
    

    在这个例子中,person 被标注为一个字典,键是 str 类型,值是 int 类型。

    3. Optional 类型

    有时,变量或函数参数可能是某种类型或 None。这种情况下,可以使用 Optional 类型提示。

    from typing import Optional
    
    def greet(name: Optional[str] = None) -> str:
        if name:
            return "Hello, " + name
        else:
            return "Hello, World"
    

    在这个例子中,参数 name 可以是 str 类型,也可以是 None

    4. Any 类型

    如果变量或参数可以是任意类型,可以使用 Any 类型提示。

    from typing import Any
    
    def process(data: Any) -> None:
        print(data)
    

    在这个例子中,参数 data 可以是任何类型。

    5. Union 类型

    当变量或参数可以是多种不同类型时,可以使用 Union 类型提示。

    from typing import Union
    
    def process(value: Union[int, str]) -> None:
        if isinstance(value, int):
            print(f"Integer: {value}")
        else:
            print(f"String: {value}")
    

    在这个例子中,参数 value 可以是 int 类型或 str 类型。

    6. 自定义类型

    可以使用 TypedDict 来定义具有特定键和值类型的字典。

    from typing import TypedDict
    
    class Person(TypedDict):
        name: str
        age: int
    
    person: Person = {"name": "Alice", "age": 25}
    

    在这个例子中,Person 是一个具有 namestr 类型)和 ageint 类型)键的字典类型。

    7. 类型别名

    类型别名用于为复杂的类型创建别名,以提高代码的可读性。

    from typing import List
    
    Vector = List[float]
    
    def scale(scalar: float, vector: Vector) -> Vector:
        return [scalar * num for num in vector]
    

    在这个例子中,VectorList[float] 类型的别名,使得函数签名更加清晰。

    总结

    类型提示是一种提高代码质量和可维护性的强大工具。尽管 Python 是动态类型语言,类型提示不会影响代码的运行,但它可以在代码编辑器和静态类型检查工具(如 mypy)中提供有价值的帮助。通过合理使用类型提示,开发者可以编写更清晰、更可靠的代码。

  • 相关阅读:
    整理自己平时用到的【快捷键】
    数据分析三剑客-Matplotlib
    Java反射
    Java多线程按顺序输出10以内的奇偶数
    面试如何回答弹性盒子布局这个问题呢?
    最高人民法院:跨境赌博利用区块链、虚拟货币等新兴技术逃避打击
    java计算机毕业设计销售管理系统演示录像源码+系统+数据库+lw文档
    C#程序全局异常处理—WPF和Web API两种模式
    算法---反转字符串中的单词 III
    Twitter图片数据优化的细节
  • 原文地址:https://blog.csdn.net/bigorsmallorlarge/article/details/140411638