python dir()内置函数的更好替代
python-ls的Python项目详细描述
Pythonls
更好地替换python内置的dir
函数,同时考虑搜索。
有时,当您使用python的交互式shell或ipython进行开发,或者使用jupyter笔记本,甚至使用pdb进行调试时,您会发现自己必须在复杂的对象结构中导航。如果您不完全熟悉手头的类,通常有两种选择:使用正在使用的库和项目的文档,或者戴上资源管理器的帽子,沿着试错路线走下去,使用python的内置dir
函数来查看对象可能具有哪些属性和函数,然后使用猜猜你要检查的下一个物体。
一定有更好的办法,对吧?
好吧,现在是的,你有ls
来帮助你完成这项任务。如果你对你要找的东西有一个大致的概念,你可以用名字来搜索这个“东西”(在这里祈祷:希望你正在处理的api/库的开发人员对他们的命名约定足够小心)。即使(通常)目标对象可能在对象结构的深层。
ls
递归地遍历对象结构,它尝试访问属性以搜索您要查找的名称。如果遇到字典,它还会考虑字典键,最后它会打印出匹配的匹配项并告诉您它们的类型。
>>>ls(ls,'code',depth=3)func_codecodefunc_code.co_codestr200func_code.co_code.decode()builtin_function_or_methodfunc_code.co_code.encode()builtin_function_or_methodfunc_code.co_filename.decode()builtin_function_or_methodfunc_code.co_filename.encode()builtin_function_or_methodfunc_code.co_lnotab.decode()builtin_function_or_methodfunc_code.co_lnotab.encode()builtin_function_or_methodfunc_code.co_name.decode()builtin_function_or_methodfunc_code.co_name.encode()builtin_function_or_methodfunc_globals['xdir'].func_codecodefunc_globals['iter_ls'].func_codecode
安装
pip install python-ls
ls
内置
python-ls
将在安装步骤时在__builtin__
命名空间中注入ls
函数。
它通过使用.pth
文件来实现这一点,该文件只需执行该注入。
安全性
如果对具有属性、惰性属性或任何其他动态代码的对象运行此命令,请记住ls
将尝试使用getattr()
获取属性/惰性属性的值。这将导致函数体被执行,所以您可以想象这里已经存在潜在的危险,对吧?
todo:设置默认值unsafe=False
kwarg,然后仅当unsafe
显式设置为True
时才访问属性。
关于名字ls
python有一个内置的dir
。与gnu/linux世界中的命令行命令等价的是ls
。我们已经考虑过调用它xdir
,顺便说一句,它是一个类似于dir()
的函数,通过向您返回事件列表。
贡献!
请发送您的问题、错误报告,更欢迎您的请求;-)
享受吧!