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

如何用Python和NLP根据函数名推导其返回类型

从函数名推导返回类型的实现方案

核心实现逻辑

蛇形命名的函数名通常遵循固定的语义排布规则,你可以通过规则匹配+关键词库的方式快速实现需求,准确率足以覆盖绝大多数常规场景:

  • 提前预设常用的返回类型关键词集合,支持自定义扩展业务专属类型
  • 按命名习惯设置匹配优先级:
    1. 优先匹配return/get等动作词之后的第一个单词,这类位置出现类型词的概率最高
    2. 未匹配到则从后往前遍历单词列表,匹配xxx_类型这类后缀命名的场景

示例代码

# 通用返回类型集合,可根据自身业务场景自由扩展
COMMON_RETURN_TYPES = {"list", "dict", "str", "int", "float", "bool", "tuple", "set", "dataframe", "ndarray", "json"}

def infer_return_type(words_list: list) -> str | None:
    # 优先级1:匹配动作词后的第一个类型词
    action_words = {"return", "get", "fetch", "query", "load", "read"}
    for idx, word in enumerate(words_list):
        if word in action_words and idx + 1 < len(words_list):
            next_word = words_list[idx + 1]
            if next_word in COMMON_RETURN_TYPES:
                return next_word
    # 优先级2:匹配末尾的类型词,适配xxx_list这类后缀命名
    for word in reversed(words_list):
        if word in COMMON_RETURN_TYPES:
            return word
    # 无匹配时返回None,也可根据需求返回默认值
    return None

# 测试示例
print(infer_return_type(["return", "list", "of", "apples"]))  # 输出:list
print(infer_return_type(["return", "apples", "list"]))  # 输出:list

复杂场景适配

如果你的函数名命名规范不统一,规则匹配准确率不够,可以引入轻量NLP能力优化:

  • 用nltk的词性标注过滤掉介词、动词等非名词词汇,缩小类型关键词的匹配范围
  • 如果你有大量标注好的<函数名, 返回类型>样本,可以用scikit-learn训练轻量文本分类模型,TF-IDF特征加朴素贝叶斯分类器在小样本下就能获得不错的准确率
相关Python模块说明

目前没有专门针对这个场景的成熟第三方模块,因为该需求高度依赖具体团队的命名规范,通用性较低。你可以基于上述规则方案自定义扩展,成本很低,灵活度也更高。

内容的提问来源于stack exchange,提问作者amin shahidi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 19:36:02