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

如何让IPython Tab补全仅显示模块自有函数,无需下划线重命名导入?

解决IPython模块tab补全只显示自有函数的方法

不用下划线重命名导入模块,你可以通过以下两种方式实现IPython tab补全只显示自定义函数:

方法1:定义__all__变量

在你的模块中显式声明__all__列表,只包含你想对外暴露的自有函数名。IPython的tab补全机制会优先遵循这个变量的定义,忽略未列入的导入模块或其他属性。

修改你的without_underscore.py:

import os

__all__ = ['list']  # 只列出你想让补全显示的函数

def list(path):
    os.listdir(path)

导入后执行without_underscore.<tab>,只会显示list,和用下划线重命名的效果一致。

方法2:自定义__dir__()方法

通过重写模块的__dir__函数,直接返回你希望补全显示的属性列表。这种方式更灵活,适合需要动态控制补全内容的场景。

修改后的without_underscore.py:

import os

def list(path):
    os.listdir(path)

def __dir__():
    return ['list']  # 自定义补全时显示的内容

同样,导入后tab补全只会展示list,导入的os模块不会出现在补全列表里。

补充说明

  • __all__原本是用于控制from module import *时导入的内容,但IPython的补全系统也会参考这个变量。
  • __dir__是Python的特殊方法,当调用dir(module)时会触发,而IPython的tab补全正是基于dir()的返回结果生成的。

内容的提问来源于stack exchange,提问作者Joe Sar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 21:40:20