A Byte of Python

Precedència dels operadors

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

OperadorDescripció
lambdaExpressió Lambda
ordisjunció lògica
andconjunció lògica
not xnegació lògica
in, not inComprovació de pertinença
is, is notTest d'identitat
<, <=, >, >=, !=, ==Comparacions
|Disjunció binària
^Disjunció exclusiva binària
&Conjunció binària
<<, >>Desplaçaments
+, -Suma i resta
*, /, %Multiplicació, divisió i resta
+x, -xPositiu i negatiu
~xNegació binària
**Potència
x.attributeReferè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.

Ordre d'avaluació

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.

Associativitat

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).