Molto spesso durante la descrizione di un algoritmo ci si trova a dover affrontare il problema del controllo del flusso, ossia dall'esecuzione condizionale di operazioni. Essa è governata dal costrutto if/elif/else. Per esempio la seguente funzione sign restituisce +1, -1 o zero a seconda che il valore di x sia maggiore, minore o uguale a zero:
>>> def sign(x): ... if (x > 0): # se x > 0 ... print "first" ... val=1 ... elif (x < 0): # altrimenti se x < 0 ... print "second" ... val=-1 ... else: ... print "third" ... val=0 ... return val ... >>> sign(4) first 1 >>> sign(0.000) third 0 >>> sign(-0.12) second -1Da notare che l'istruzione return, essendo allineata allo stesso livello del blocco di istruzioni if elif else, riprende il flusso sequenziale e viene sempre eseguita a prescindere dall'esito dell'if. Nel costrutto deve esistere almeno un if, mentre può esistere o meno un solo else al termine del blocco e possono eistere da zero ad un numero arbitrario di conzizioni elif. L'interprete Python, esamina l'insieme di condizioni dalla prima all'ultima, e se ne trova una verificata esegue il corrispondente sottoblocco e poi esce dal blocco if.
Oltre agli operatori binari maggiore > e minore <, esistono anche quello di maggiore-uguale >=, minore-uguale <=, uguaglianza == (che è diverso da quello di assegnazione =), e 'diverso' !=.