21.04.2013 Views

Inmersión en Python Inmersión en Python - iPereda

Inmersión en Python Inmersión en Python - iPereda

Inmersión en Python Inmersión en Python - iPereda

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

... print c<br />

... print b<br />

... print a<br />

>>> parameters = ('apple', 'bear', 'catnap')<br />

>>> foo(parameters)<br />

catnap<br />

bear<br />

apple<br />

La manera correcta de invocar las función foo es con una tupla de tres<br />

elem<strong>en</strong>tos. Cuando se llama a la función se asignan los elem<strong>en</strong>tos a<br />

difer<strong>en</strong>tes variables locales d<strong>en</strong>tro de foo.<br />

Ahora vamos a ver por qué era necesario este truco de autoexpansión de tupla.<br />

patterns es una lista de tuplas y cada tupla ti<strong>en</strong>e tres elem<strong>en</strong>tos. Cuando se<br />

invoca map(buildMatchAndApplyFunctions, patterns), eso significa que no<br />

estamos llamando a buildMatchAndApplyFunctions con tres parámetros. Si<br />

usamos map para relacionar una única lista a una función siempre invocamos la<br />

función con un único parámetros: cada elem<strong>en</strong>to de la lista. En el caso de<br />

patterns, cada elem<strong>en</strong>to de la lista es una tupla, así que a<br />

buildMatchAndApplyFunctions siempre se le llama con la tupla, y usamos el<br />

truco de autoexpansión de tuplas <strong>en</strong> la definición de<br />

buildMatchAndApplyFunctions para asignar los elem<strong>en</strong>tos de la tupla a<br />

variables con las que podemos trabajar.<br />

Footnotes<br />

[21] N. del T.: o cierre<br />

17.6. plural.py, fase 5<br />

Hemos eliminado casi todo el código duplicado y añadido sufici<strong>en</strong>tes<br />

abstracciones para que las reglas de pluralización se definan <strong>en</strong> una lista de<br />

cad<strong>en</strong>as. El sigui<strong>en</strong>te paso lógico es tomar estas cad<strong>en</strong>as y ponerlas <strong>en</strong> un<br />

fichero aparte, donde se puedan mant<strong>en</strong>er de forma separada al código que las<br />

usa.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!