[pyar] [Consulta]Programación: constante

John Rowland Lenton john.lenton en canonical.com
Dom Mar 4 20:14:35 ART 2012


On Sun, 4 Mar 2012 18:18:31 -0300, Diva Satanica <apokalyptica79 en gmail.com> wrote:
> porque no existe la constante en python?

無. Mu. Tu pregunta tiene adentro de ella misma suposiciones erróneas
que hacen que la pregunta no tenga respuesta.

En Python, hay objetos que no se pueden cambiar (son inmutables), pero
la asignación de nombres a objetos es completamente dinámica. Un nombre
en un espacio de nombres no es ni más ni menos que una entrada en un
diccionario particular. Osea, lo que vos querés, no tiene sentido en
Python. Osea, no, no existen. Fin de la respuesta.





.
.
.


Pero...
... te las podés fabricar.

Fijate que no todos los nombres son iguales:

>>> None = 42
  File "<console>", line 1
SyntaxError: assignment to keyword
>>> True, False = False, True
  File "<console>", line 1
SyntaxError: assignment to keyword
>>> 

entonces lo único que tenés que hacer para tener una constante, es
decirle al parser como palabra clave.

Para que quede claro: eso es un hack, una chanchada, metida para que la
gente no mande moco. Ni None, ni True ni False son palabras clave; son
instancias de clases comunes y corrientes (bueno, más o menos; None no
la podrías implementar en python "puro", pero desde más abajo es
refácil). Ni siquiera todas las “constantes” de las tripas de Python
gozan de este beneficio; hasta hace poco (Python 2.4? por ahí) podías
asignar a cualquiera de estos valores lo que se te ocurriera, y
funcionaba. La asignación a True y False todavía funciona en Python 2.7;
hay mucho código python viejo dando vuelta que empieza con

  True, False = 1, 0

porque True y False no eran parte de Python, antes. Ni a NotImplemented
ni a Ellipsis las protege nadie, pobrecitas.

Así que, bueno, podés. Suerte con eso.
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: no disponible
Type: application/pgp-signature
Size: 489 bytes
Desc: no disponible
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20120304/f00b5bbe/attachment.sig>


More information about the pyar mailing list