Skip to main content

提供 isiterable 函数以检查对象是否可快速迭代以用于生产中的代码的模块。

项目描述

可重复的

isiterable是一个提供isiterable函数的 Python 模块,它充当对象检查器以了解它是否可迭代。它不调用该函数,也没有不受欢迎的性能数字。

可迭代的特点

安装

pip install --upgrade isiterable

用法

from isiterable import isiterable


print(isiterable(57890))  # False
print(isiterable([1, "Hello!"]))  # True

与类一起使用

from isiterable import isiterable


class NoIters:
    def __init__(self, *args):
        self.args = args

    def __iter__(self):
        # isiterable will return False, Must be a generator :/
        return self.args


class YesIters:
    def __init__(self, *args):
        self.args = args

    def __iter__(self):
        # Works!
        for arg in args:
            yield arg


x = YesIters((1, 2))
res = isiterable(x)
print(res)  # True

x = NoIters("Hello!")
res = isiterable(x)
print(res)  # False

其他例子

>>> from isiterable import isiterable
>>> isiterable(b"\x00\x01...")
True
>>> isiterable(callable)
False
>>> isiterable({"key1": True})
True
>>> isiterable([])
True

可迭代的替代品

如果它与 using 不匹配isiterable,则有一些解决方案您知道哪个更好。

尝试者

这涉及调用__iter__

try:
    iter(object)
except TypeError:
    pass

拥有者

这将检查对象是否具有属性__iter__

if hasattr(object, "__iter__"):
    # ...

基准

这个小型基准测试使用 3 个代码块:

object要传递的论点在哪里

运行benchmark.py将给出与此类似的结果

Running 1,000,000 times each block of code...

Results of isiterable: 0.381
Results of hasiter   : 0.777
Results of tryiter   : 5.689

最好的结果是isiterabletryiter的结果最差。

下载文件

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

源分布

isiterable-1.0.post1.tar.gz (4.1 kB 查看哈希

已上传 source

内置分布

isiterable-1.0.post1-cp310-cp310-linux_armv7l.whl (9.8 kB 查看哈希

已上传 cp310