Considerem l'expressió 2 + 3 * 4
. Es farà abans la
suma o la multiplicació? Per la nostra formació matemàtica esperarem
que la multiplicació es realitzi primer – és a dir, l'operador de
multiplicació te preferència davant el de la suma.
La següent taula mostra la precedència en ordre creixent dels operadors de Python. Això implica que, donada una expressió, Python avaluarà primer un operador que aparegui més a baix a la taula que un que estigui a sobre seu.
Es tracta de la mateixa taula que apareix al manual de referència de
Python i només l'he afegit per qüestions de completesa. Amb tot, és
recomanable fer servir els parèntesis per a agrupar operadors i
operands, deixant explícita la precedència que s'espera. Això farà
els programes més llegibles. Per exemple, 2 + (3 * 4)
resulta molt més clar que 2 + 3 * 4
. Com amb tot,
l'ús dels parèntesis ha de ser racional i s'ha d'intentar no posar-ne
de més. Per exemple a 2 + (3 + 4)
.
Table 5.2. Precedència dels operadors
Operador | Descripció |
---|---|
lambda | Expressió Lambda |
or | disjunció lògica |
and | conjunció lògica |
not x | negació lògica |
in, not in | Comprovació de pertinença |
is, is not | Test d'identitat |
<, <=, >, >=, !=, == | Comparacions |
| | Disjunció binària |
^ | Disjunció exclusiva binària |
& | Conjunció binària |
<<, >> | Desplaçaments |
+, - | Suma i resta |
*, /, % | Multiplicació, divisió i resta |
+x, -x | Positiu i negatiu |
~x | Negació binària |
** | Potència |
x.attribute | Referència a atribut |
x[i] | Indexació |
x[i:j] | Tall |
f(arguments ...) | Crida a funció |
(expressions, ...) | Agrupació o tupla |
[expressions, ...] | Llista |
{clau:valor, ...} | Diccionari |
`expressions, ...` | Conversió de strings |
Estudiarem més endavant els operadors que encara no coneixem.
Els operadors amb la mateixa precedència apareixen
a la mateixa fila.
Per exemple, +
i -
tenen la
mateixa precedència.
Per defecte, la precedència dels operadors decideix quins operadors
s'avaluen abans que els altres. Aquest ordre d'avaluació pot ser
canviat fent servir parèntesis. Per exemple, si volem que la suma es
realitzi abans de la multiplicació a una expressió, llavors podem
escriure quelcom semblant a (2 + 3) * 4
.
Els operadors s'associen generalment d'esquerra a dreta. És a dir,
els operadors amb la mateixa precedència s'avaluen en ordre
d'esquerra a dreta. Per exemple, 2 + 3 + 4
s'avalua com (2 + 3) + 4
. Hi ha però, alguns
operadors, com ara l'assignació, que tenen associació de dreta a
esquerra. Per exemple, a = b = c
és tractat
com a = (b = c)
.