Associatività di “in” in Python?

| | |

Sto creando un parser Python, e questo davvero mi confonde:

>>> 1 in [] in "a" False >>> (1 in []) in "a" TypeError: "in <string>" richiede string come operando sinistro, non bool >>> 1 in ([] in "a") TypeError : "in <string>" richiede una stringa come operando sinistro, non un elenco 

Come funziona esattamente in in Python, per quanto riguarda l'associatività, ecc.?

Perché nessuna di queste espressioni si comporta allo stesso modo?