You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Python函数的socket参数添加正确的类型提示?

为Python Socket参数添加正确的类型提示

根据你使用的套接字类型,有几种不同的类型提示方案:

1. 标准库同步Socket

如果你的函数接收的是Python标准库socket模块创建的套接字对象,直接使用socket.socket作为类型注解即可,记得先导入socket模块:

import socket

def read_socket(socket: socket.socket):
    data = socket.recv(1024)
    return data

2. 异步Socket(asyncio场景)

如果是处理asyncio中的异步套接字,通常会用到StreamReader和StreamWriter,对应的类型提示如下:

from asyncio import StreamReader, StreamWriter

async def read_async_socket(reader: StreamReader, writer: StreamWriter):
    data = await reader.read(1024)
    # 后续处理逻辑

3. 泛化的套接字类型(兼容自定义实现)

如果你的函数需要兼容多种符合套接字接口的对象(比如自定义的模拟套接字用于测试),可以通过typing.Protocol定义一个协议类,限定必须实现的方法:

from typing import Protocol

class SocketLike(Protocol):
    def recv(self, bufsize: int) -> bytes:
        ...

def read_socket(socket: SocketLike):
    data = socket.recv(1024)
    return data

这种方式允许任何实现了recv方法的对象传入,同时保留类型检查的能力。

内容的提问来源于stack exchange,提问作者Triet Doan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 17:55:59