haciendo comparacion de cuerdas en python

Estaba intentando replicar el strcmp de c en python. Escribí el programa anterior y funcionó, pero este último parece funcionar también. Por favor, explique el último. Solo esperaba que == funcionara pero>, <parece que funciona bien. ¿Cómo sabe Python que con <,> me refiero a la longitud de la cadena sin usar len ()

def strcmp(str1,str2):
    if(len(str1) == len(str2)):
     return 0
    if(len(str1) > len(str2)):
     return 1
    if(len(str1) < len(str2)):
     return -1
print strcmp("ashsih","aapam")

vs

def strcmp(str1,str2):
    if(str1 == str2):
     return 0
    if(str1 > str2):
     return 1
    if(str1 < str2):
     return -1
print strcmp("ashsih","aapam")

Respuestas a la pregunta(2)

Su respuesta a la pregunta