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.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…