Why does 4 < '3' return True in Python 2?

后端 未结 3 1500
我寻月下人不归
我寻月下人不归 2020-12-03 21:01

Why does 4 < \'3\' return True in Python 2?

Is it because when I place single quotes around a number Python sees it as a string and stri

3条回答
  •  爱一瞬间的悲伤
    2020-12-03 21:16

    Yes, any number will be less than any string (including the empty string) in Python 2.

    In Python 3, you can't make arbitrary comparisons. You'll get a TypeError.


    From the link in eryksun's comment:

    if (PyNumber_Check(v))
        vname = "";
    else
        vname = v->ob_type->tp_name;
    if (PyNumber_Check(w))
        wname = "";
    else
        wname = w->ob_type->tp_name;
    c = strcmp(vname, wname);
    

    So at least in recent versions of CPython 2.x, type names are compared, with an empty string used instead of the type name for any numeric type.

提交回复
热议问题