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 的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 0df7b757db041e2cd50bebf2f3bb8403d72b0dc4d0fa36beeee216eb6231d1a2 |
|
MD5 | 0ac1a6f6be8ea297babbe27dd4c54bf9 |
|
BLAKE2b-256 | 4579301ce42fdc7ca19802c1a307d726cedf7bf42e74915397d0919eea02d33c |
python-ls-0.1.5-py2.py3-none-any.whl 的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 321f2003fa8caa892cbc45fcbce4be8d1531fa5df8c7389fa1679ae56451deea |
|
MD5 | 7bd6a94c01a44bb3c6d16f486b46a6a3 |
|
BLAKE2b-256 | ffe6741dc18e7eef8f3490499fe3f27dfe3035e5da38803841676864d8772cc4 |