[pyar] [Consulta]Programación: constante

Diva Satanica apokalyptica79 en gmail.com
Dom Mar 4 21:43:15 ART 2012


En mi caso es porque estoy retomando mi pseudo auto aprendizaje de python y
acostumbrada a otros lenguajes de programación donde siempre figuran las
constantes, me di cuenta que en python eso no había leído y pregunté de
curiosa.

El 4 de marzo de 2012 21:40, Ricardo Araoz <ricaraoz en gmail.com> escribió:

> El 04/03/12 21:16, Angel Java Lopez escribió:
> > Hola gente!
> >
> > Interesantisimo, John! Me habia confundido leer que alguna parte que
> > se podia cambiar True, False, y luego que no. Tengo que ir aprendiendo
> > las diferencias de 2.x a 3.x
> >
> > Luego de buscar, leer por aqui, en este thread, y en otros lados,
> > arriesgo esta explicacion:
> >
> > - No hay constantes en Python, por ser un lenguaje dinamico, como
> > Ruby, Javascript y otros, donde el compilador/interprete no puede
> > detectar ANTES DE RUNTIME, si ONE = 2 es valido o no, habiendo sido
> > declarada ONE como constante en otro lado
> >
> > - Y la deteccion en RUNTIME es (o por lo menos, me parece a mi) costosa
> >
> > Cualquier interprete o compilador veria afectada su implementacion si
> > tuviera que chequear a cada rato
> >
> > ONE = 2
> >
> > si esta asignacion es valida o no. Se puede hacer en ejecucion el
> > control, pero probablemente (dependiendo de la implementacion interna,
> > mas alla de alias o no alias, vean que el problema es el mismo con
> > alias o sin alias) seria costosa en tiempo o en espacio, solo para
> > tener soporte del tema de constantes.
> >
> > Por ejemplo, se me ocurren formas de implementar, aun con diccionarios
> > como menciona John, que una entrada en particular sea asignable solo
> > una vez. Pero todas las formas que imagino son costosas en ejecucion.
> >
> > Algun lenguaje dinamico (p.ej., donde la validez de x.y, x.y(), x.y =
> > 2, ONE = 2 se deciden en runtime) con soporte de constantes definidas
> > por el programador? No encontre ninguno, hay?
> >
> > Un ejemplo y discusion de Ruby:
> > http://rubylearning.com/satishtalim/ruby_constants.html
> > donde hay constantes, pero su cambio es permitido, aunque da warning
> > (en ejecucion hasta donde se). Vean ahi, como el no ser inmutables los
> > string en Ruby, tiene menos sentido tener "constantes" string.
> > Parece que los implementadores de Ruby podrian haber tomado: todo lo
> > que comienza con mayusculas es constante. Y algo asi hicieron. PERO,
> > lo que se les complico NO ES:
> > ONE = 1
> > Intuyo que lo que SE LES COMPLICA es detectar, en cualquier parte que:
> > ONE = 2
> > "deberia" ser rechazada por estar ya definida ONE = 1 en otro lado.
> > Notablemente, Ruby rechaza
> > def foo()
> > CONST =3
> > end
> > por razones totalmente distintas ;-)
> >
> > Hmmm... la unica forma que se me ocurre de tener constantes, en un
> > lenguaje dinamico, es que soporte preprocesador, como en C (o ya que
> > estamos, onda compiladores en el recuerdo, como en WATFOR ;-)
> >
> > #define ONE 1
> >
> > y que sea el parser el que traduzca cualquier
> >
> > ONE = 2
> >
> > a
> >
> > 1 = 2
> >
> > y entonces el compilador, que no ve "ONE = 2" sino el preprocesado "1
> > = 2", diga error, invalid left expression o algo asi.
> >
>
> De todas maneras y sin ánimo de ofender, hay que preguntarse para qué
> quiero dicha constante.
> Si la razón es impedirme a mí mismo el modificar mi propia constante,
> entonces lo mejor es ir al psicólogo.
> Si la razón es que estoy haciendo un script que puede ser llamado desde
> otro lado donde podrían haber redefinido el nombre que uso entonces lo
> mejor es utilizar las convenciones de python y usar _UNO o también __UNO.
> Si la razón es que quiero que se parezca más a lo que estoy acostumbrado
> a usar entonces lo mejor es usar Java, que es lo más parecido a Java que
> puedo encontrar (reemplazar "Java" por "C++", "C#", o lo que sea).
>
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>



-- 
Divine queen of evil
Sowing her seeds of hate
Mistress of pain
Diva satanica - Master of temptation
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20120304/442a5ab8/attachment.html>


More information about the pyar mailing list