广东网站建设wordpress圈子
2026/4/17 23:47:03 网站建设 项目流程
广东网站建设,wordpress圈子,网站策划任职要求,做贸易的网站Python 的类型标注#xff08;Type Hints#xff09;是 PEP 484 引入的特性#xff0c;不会改变 Python 动态类型的本质#xff08;解释器不会强制校验类型#xff09;#xff0c;但能让代码更易理解、IDE#xff08;如 PyCharm、VS Code#xff09;提供智能提示#…Python 的类型标注Type Hints是 PEP 484 引入的特性不会改变 Python 动态类型的本质解释器不会强制校验类型但能让代码更易理解、IDE如 PyCharm、VS Code提供智能提示还能通过静态检查工具如 mypy提前发现类型错误。一、基础类型标注1.1 简单变量标注对于整数、字符串、浮点数、布尔值等基础类型直接在变量名后加: 类型即可。python# 基础类型标注示例 age: int 25 # 整数类型 name: str 张三 # 字符串类型 height: float 1.75 # 浮点数类型 is_student: bool True # 布尔类型1.2 延迟赋值的变量标注如果变量先声明、后赋值比如在函数开头声明可以单独标注类型python# 延迟赋值的标注 total: int total 0 # 后续赋值 # 空值标注None类型 empty_var: None None二、复杂数据类型标注对于列表、字典、元组等复杂类型Python 3.9 支持直接用内置类型标注更简洁3.9 以下需要从typing模块导入对应类型。2.1 列表List标注列表中元素的具体类型python# Python 3.9 写法推荐 nums: list[int] [1, 2, 3] # 元素为整数的列表 names: list[str] [张三, 李四] # 元素为字符串的列表 # Python 3.8及以下写法需导入typing from typing import List nums: List[int] [1, 2, 3]2.2 字典Dict标注字典的键和值的类型python# Python 3.9 写法 user_info: dict[str, str] {name: 张三, city: 北京} # 键值均为字符串 score: dict[str, int] {math: 90, english: 85} # 键为字符串值为整数 # Python 3.8及以下写法 from typing import Dict user_info: Dict[str, str] {name: 张三, city: 北京}2.3 元组Tuple元组标注需要指定每个元素的类型固定长度或指定统一类型 ...任意长度python# Python 3.9 写法 # 固定长度固定类型比如坐标x,y都是浮点数 point: tuple[float, float] (10.5, 20.8) # 任意长度统一类型所有元素都是整数 numbers: tuple[int, ...] (1, 2, 3, 4) # Python 3.8及以下写法 from typing import Tuple point: Tuple[float, float] (10.5, 20.8)2.4 可选类型Optional标注变量可以是指定类型也可以是Nonepython# Python 3.10 写法更简洁 email: str | None None # 可以是字符串或None # Python 3.9及以下写法 from typing import Optional email: Optional[str] None # 等价于 Union[str, None]2.5 任意类型Any如果不确定变量类型可用Any不推荐过度使用会失去类型标注的意义pythonfrom typing import Any data: Any 123 data hello # 类型可以随意改变 data [1, 2, 3]三、函数的参数和返回值标注类型标注最常用的场景是函数包括参数类型和返回值类型返回值用-标注。3.1 基础函数标注python# 计算两数之和的函数 def add(a: int, b: int) - int: return a b # 调用函数IDE会提示参数类型mypy会校验类型 result add(5, 3) # 正确 # result add(5, 3) # mypy会提示类型错误字符串不能传给int参数3.2 带默认参数的函数标注默认参数的标注写在前面pythondef greet(name: str, age: int 18) - str: return f你好{name}今年{age}岁 print(greet(张三)) # 输出你好张三今年18岁 print(greet(李四, 20)) # 输出你好李四今年20岁3.3 返回值为 None 的函数如果函数没有返回值或返回 None返回值标注为Nonepythondef print_info(name: str) - None: print(f姓名{name}) print_info(张三) # 无返回值标注为None3.4 进阶函数类型Callable标注 “函数类型” 的变量比如回调函数pythonfrom typing import Callable # 定义一个接收int参数、返回str的函数类型 callback: Callable[[int], str] lambda x: f数字是{x} # 使用这个函数类型 def process_data(num: int, func: Callable[[int], str]) - str: return func(num) print(process_data(10, callback)) # 输出数字是10四、自定义类型别名如果复杂类型需要重复使用可以用TypeAlias定义别名简化代码pythonfrom typing import TypeAlias, List # 定义类型别名 StudentScores: TypeAlias List[dict[str, str | int]] # 学生成绩类型列表里的每个元素是字典 # 使用别名 math_scores: StudentScores [ {name: 张三, score: 95}, {name: 李四, score: 88} ]五、类型标注的验证工具类型标注本身不影响代码运行但可以用mypy工具静态检查类型错误5.1 安装 mypybashpip install mypy5.2 检查代码假设你有一个test.py文件pythondef add(a: int, b: int) - int: return a b # 故意传错类型 result add(5, 3) print(result)运行检查命令bashmypy test.pymypy 会输出类型错误提示plaintexttest.py:5: error: Argument 2 to add has incompatible type str; expected int Found 1 error in 1 file (checked 1 source file)总结关键点回顾核心作用类型标注Type Hints用于显式声明变量 / 函数的类型提升代码可读性和可维护性支持 IDE 提示和静态检查mypy但不改变 Python 动态类型的本质。版本兼容Python 3.9 可直接用list[int]/dict[str, int]等内置类型标注3.9 以下需从typing模块导入List/Dict。常用场景函数参数 / 返回值标注是最核心的使用场景复杂类型可通过别名简化可选类型用str | None3.10或Optional[str]。通过类型标注你可以让自己的 Python 代码更规范尤其是在团队协作或大型项目中能大幅降低类型相关的 bug 概率。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询