首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Python 类型提示

Python 类型提示

作者头像
小田测测看
发布2026-06-17 17:52:49
发布2026-06-17 17:52:49
660
举报

类型提示是 Python 3.5+ 引入的特性,允许为变量、函数参数和返回值指定预期类型。它不会改变 Python 动态类型的本质,但能提升代码的可读性、增强 IDE 的支持,并通过静态检查工具(如 mypy)提前发现潜在的错误。

基础语法

1.变量类型提示

为变量指定类型,格式为 变量名: 类型 = 值

代码语言:javascript
复制
name: str = "拾光"  # 字符串
age: int = 18        # 整数
height: float = 1.75 # 浮点数
is_student: bool = False  # 布尔值

2. 函数参数与返回值类型提示

  • • 函数参数:def 函数名(参数: 类型, ...)
  • • 返回值:def 函数名(...) -> 返回类型
代码语言:javascript
复制
def greet(name: str) -> str:
    """向指定名称的人打招呼"""
    return f"Hello, {name}!"

def add(a: int, b: int) -> int:
    """返回两个整数的和"""
    return a + b

3. 类型(列表、元组、字典等)

需从 typing 模块导入泛型类型(Python 3.9+ 可直接用内置容器加中括号):

代码语言:javascript
复制
# Python 3.9+ 的写法
from typing import List, Tuple, Dict, Set  # 兼容旧版本,3.9+ 可省略

# 列表(元素均为 int)
numbers: list[int] = [1, 2, 3]
# 元组
person: tuple[str, int] = ("拾光", 18)  # (姓名, 年龄)
# 字典
scores: dict[str, int] = {"math": 90, "english": 85}
# 集合
hobbies: set[str] = {"reading", "coding"}

4. 可选类型(Optional

表示变量 / 参数可以是指定类型或 None

代码语言:javascript
复制
from typing import Optional

def find_user(user_id: int) -> Optional[str]:
    """查找用户,找到返回用户名,否则返回 None"""
    if user_id == 1:
        return "拾光"
    return None  # 允许返回 None

等价于 Union[type, None]

5. 联合类型(Union

表示变量 / 参数可以是多种类型中的一种

代码语言:javascript
复制
from typing import Union

def print_id(user_id: Union[int, str]) -> None:
    """接受整数或字符串类型的用户 ID 并打印"""
    print(f"User ID: {user_id}")

print_id(123)    # 合法(int)
print_id("u456") # 合法(str)

6. 函数类型(Callable

表示参数或返回值是函数

代码语言:javascript
复制
from typing import Callable

def calculate(a: int, b: int, func: Callable[[int, int], int]) -> int:
    """使用传入的函数计算 a 和 b 的结果"""
    return func(a, b)

def multiply(x: int, y: int) -> int:
    return x * y

result = calculate(3, 4, multiply)  # 传入函数作为参数
print(result)  # 输出:12

7. 自定义类型

可为复杂类型定义别名

代码语言:javascript
复制
from typing import List, Tuple

# 定义类型别名:用户信息(姓名,年龄,爱好列表)
UserInfo = Tuple[str, int, List[str]]

def get_user() -> UserInfo:
    return ("Charlie", 30, ["hiking", "photography"])

静态类型检查(mypy

mypy 是常用的静态检查工具,可在运行前检测类型不匹配的问题:

代码语言:javascript
复制
# pip install mypy
def add(a: int, b: int) -> int:
    return a + b

result = add("1", 2)  # 错误:第一个参数应为 int,实际传入 str

运行检查:

代码语言:javascript
复制
mypy demo.py

输出错误提示:

代码语言:javascript
复制
error: Argument 1 to "add" has incompatible type "str"; expected "int"

类型提示是 Python 代码工程化的重要工具,合理使用能显著提升代码质量和可维护性

#Python #python类型提示

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-08-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 编程拾光 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 类型提示是 Python 3.5+ 引入的特性,允许为变量、函数参数和返回值指定预期类型。它不会改变 Python 动态类型的本质,但能提升代码的可读性、增强 IDE 的支持,并通过静态检查工具(如 mypy)提前发现潜在的错误。
    • 基础语法
    • 1.变量类型提示
    • 2. 函数参数与返回值类型提示
    • 3. 类型(列表、元组、字典等)
    • 4. 可选类型(Optional)
    • 5. 联合类型(Union)
    • 6. 函数类型(Callable)
    • 7. 自定义类型
    • 静态类型检查(mypy)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档