跳转到主要内容

Python内置dir()函数的更好替代品

项目描述

python-ls

一个更好的替代品,用于替换Python的内置dir函数,并考虑搜索功能。

有时,当您使用Python交互式shell、IPython、Jupyter Notebook或使用pdb进行调试时,您发现自己需要导航复杂的对象结构。如果您不完全熟悉手中的类,您通常有两个选择:求助于您正在使用的库和项目的文档,或者戴上探险家的帽子,尝试通过Python的内置dir函数查看对象可能具有哪些属性和函数,然后对下一个要检查的对象进行合理的猜测。

一定有更好的方法,对吧?

嗯,现在是的,您有了ls来帮助您完成这项任务。如果您对要找的东西有一个大致的印象,您可以通过名称来搜索那个“东西”(在这里希望是:希望您正在处理的API/库的开发者足够注意命名约定)。即使(经常)您的目标对象可能在对象结构中几层以下。

ls会递归地遍历您的对象结构,尝试查找您正在寻找的名称的属性。如果它遇到了字典,它还会考虑字典键,最后它会打印出匹配的实例并告诉您它们的类型。

>>> ls(ls, 'code', depth=3)
func_code                                                                             code
func_code.co_code                                                                      str    200
func_code.co_code.decode()                                      builtin_function_or_method
func_code.co_code.encode()                                      builtin_function_or_method
func_code.co_filename.decode()                                  builtin_function_or_method
func_code.co_filename.encode()                                  builtin_function_or_method
func_code.co_lnotab.decode()                                    builtin_function_or_method
func_code.co_lnotab.encode()                                    builtin_function_or_method
func_code.co_name.decode()                                      builtin_function_or_method
func_code.co_name.encode()                                      builtin_function_or_method
func_globals['xdir'].func_code                                                        code
func_globals['iter_ls'].func_code                                                     code

安装

pip install python-ls

内建命令 ls 可用

python-ls 在安装步骤会将 ls 函数注入到 __builtin__ 命名空间中。

它通过一个简单的 .pth 文件来完成这个注入。

安全性

如果你正在对此类具有属性、延迟属性或其他动态代码的对象执行操作,请注意,ls 将尝试使用 getattr() 获取属性/延迟属性的值。这将导致函数体被执行,所以你可以想象出这里潜在的风险,对吧?

TODO:添加默认 unsafe=False 关键字参数,并仅在明确将 unsafe 设置为 True 时访问属性。

关于名称 ls

Python 内建了 dir 命令。在 GNU/Linux 界,与此命令行命令等效的是 ls。我们曾考虑将其命名为 xdir,顺便说一句,这是一个返回给你发生列表的类似 dir() 的函数。

贡献!

请发送你的问题、错误报告,甚至更受欢迎的是,你的 Pull Requests ;-)

享受吧!

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关 安装软件包 的更多信息。

源分布

python-ls-0.1.5.tar.gz (7.0 kB 查看散列值)

上传时间

构建分布

python_ls-0.1.5-py2.py3-none-any.whl (5.4 kB 查看散列值)

上传时间 Python 2 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面