代码之家  ›  专栏  ›  技术社区  ›  SuperShoot npburns224

为什么python必须生成完整的范围来测试float是否在范围内?

  •  3
  • SuperShoot npburns224  · 技术社区  · 7 年前

    1 in range(100000000000000)
    

    1.5 in range(100000000000000)
    

    为什么必须生成完整的范围才能知道这一点 1.5 range(X) 什么时候 step 必须是整数?

    1 回复  |  直到 7 年前
        1
  •  3
  •   matt    7 年前

    如果我们检查一下 source code

    包含函数:

    range_contains(rangeobject *r, PyObject *ob)
    {
        if (PyLong_CheckExact(ob) || PyBool_Check(ob))
            return range_contains_long(r, ob);
    
        return (int)_PySequence_IterSearch((PyObject*)r, ob,
                                       PY_ITERSEARCH_CONTAINS);
    }
    

    它将检查是否使用整数或布尔方法进行检查,如果不使用,则使用PY\u ITERSEARCH\u CONTAINS。