Discussion:
[Consulta]Programación: constante
(too old to reply)
Diva Satanica
2012-03-04 21:18:31 UTC
Permalink
Hola gente preguntonta por no decir (B.....DA), porque no existe la
constante en python?
PS: Valen las puteadas por la pregunta
Gracias, saludos
--
Divine queen of evil
Sowing her seeds of hate
Mistress of pain
Diva satanica - Master of temptation
Roberto Alsina
2012-03-04 21:32:30 UTC
Permalink
Post by Diva Satanica
Hola gente preguntonta por no decir (B.....DA), porque no existe la
constante en python?
PS: Valen las puteadas por la pregunta
Gracias, saludos
<explicación probablemente errónea>

Las constantes existen! 2 es una constante :-)

Lo que no existe es la constante "con nombre" porque en python la
asignación es en realidad creación de alias para objetos.

O sea, x = 2 no "guarda 2 en x" si no que "crea un nombre x que apunta
al objeto 2". Con esa semántica, las constantes no tienen mucha cabida.

</explicación probablemente errónea>

_______________________________________________
pyar mailing list pyar-+ZN9ApsXKcFd+***@public.gmane.org
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
Diva Satanica
2012-03-04 21:35:12 UTC
Permalink
Claro, pregunté mal, porque queria preguntar la constante en sí, como vos
dijiste el nombre.

Se entendio, gracias [?]

El 4 de marzo de 2012 18:32, Roberto Alsina
Post by Roberto Alsina
Post by Diva Satanica
Hola gente preguntonta por no decir (B.....DA), porque no existe la
constante en python?
PS: Valen las puteadas por la pregunta
Gracias, saludos
<explicación probablemente errónea>
Las constantes existen! 2 es una constante :-)
Lo que no existe es la constante "con nombre" porque en python la
asignación es en realidad creación de alias para objetos.
O sea, x = 2 no "guarda 2 en x" si no que "crea un nombre x que apunta al
objeto 2". Con esa semántica, las constantes no tienen mucha cabida.
</explicación probablemente errónea>
______________________________**_________________
http://listas.python.org.ar/**listinfo/pyar<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
Sebastian Torres
2012-03-04 21:52:28 UTC
Permalink
La explicación no es errónea, justamente es lo mismo que encontré yo cuando
busqué sobre ese tema.
Pero si necesitás usar constantes podés crear un objeto que guarde el valor
deseado y despues evitar
que se pueda modificar :)
Post by Diva Satanica
Claro, pregunté mal, porque queria preguntar la constante en sí, como vos
dijiste el nombre.
Se entendio, gracias [?]
Post by Roberto Alsina
Post by Diva Satanica
Hola gente preguntonta por no decir (B.....DA), porque no existe la
constante en python?
PS: Valen las puteadas por la pregunta
Gracias, saludos
<explicación probablemente errónea>
Las constantes existen! 2 es una constante :-)
Lo que no existe es la constante "con nombre" porque en python la
asignación es en realidad creación de alias para objetos.
O sea, x = 2 no "guarda 2 en x" si no que "crea un nombre x que apunta al
objeto 2". Con esa semántica, las constantes no tienen mucha cabida.
</explicación probablemente errónea>
______________________________**_________________
http://listas.python.org.ar/**listinfo/pyar<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
_______________________________________________
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
--
*''An pessimist sees the difficulty in every opportunity;
an optimist sees the opportunity in every difficulty''
Winston
Churchill*
Diva Satanica
2012-03-04 22:01:39 UTC
Permalink
Pregunte por que me habia encontrado con ese ejemplo. Gracias
Post by Sebastian Torres
La explicación no es errónea, justamente es lo mismo que encontré yo
cuando busqué sobre ese tema.
Pero si necesitás usar constantes podés crear un objeto que guarde el
valor deseado y despues evitar
que se pueda modificar :)
Post by Diva Satanica
Claro, pregunté mal, porque queria preguntar la constante en sí, como vos
dijiste el nombre.
Se entendio, gracias [?]
Post by Roberto Alsina
Post by Diva Satanica
Hola gente preguntonta por no decir (B.....DA), porque no existe la
constante en python?
PS: Valen las puteadas por la pregunta
Gracias, saludos
<explicación probablemente errónea>
Las constantes existen! 2 es una constante :-)
Lo que no existe es la constante "con nombre" porque en python la
asignación es en realidad creación de alias para objetos.
O sea, x = 2 no "guarda 2 en x" si no que "crea un nombre x que apunta
al objeto 2". Con esa semántica, las constantes no tienen mucha cabida.
</explicación probablemente errónea>
______________________________**_________________
http://listas.python.org.ar/**listinfo/pyar<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
_______________________________________________
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
--
*''An pessimist sees the difficulty in every opportunity;
an optimist sees the opportunity in every difficulty''
Winston Churchill*
_______________________________________________
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
Roberto Alsina
2012-03-04 22:32:47 UTC
Permalink
Post by Sebastian Torres
La explicación no es errónea, justamente es lo mismo que encontré yo
cuando busqué sobre ese tema.
Pero si necesitás usar constantes podés crear un objeto que guarde el
valor deseado y despues evitar
que se pueda modificar :)
Berenjenal, here we go! Y como hacemos un objeto inmutable en puro
python? ;-)
Hernan Grecco
2012-03-04 22:39:34 UTC
Permalink
En realidad los strings de python son inmutables, lo mismo que los
tuples o los sets.

Cuando haces un append a un string, en realidad creas otro string.
Podes fijarte con la function id (y compararlo con operar en una
lista)
Post by Sebastian Torres
x = 'hola'
id(x)
2923872
Post by Sebastian Torres
x += '!'
id(x)
2923936
Post by Sebastian Torres
y = ['hola', ]
id(y)
2776400
Post by Sebastian Torres
y += ['!',]
id(y)
2776400


Hernan
Post by Sebastian Torres
La explicación no es errónea, justamente es lo mismo que encontré yo cuando
busqué sobre ese tema.
Pero si necesitás usar constantes podés crear un objeto que guarde el valor
deseado y despues evitar
que se pueda modificar :)
Berenjenal, here we go! Y como hacemos un objeto inmutable en puro python?
;-)
_______________________________________________
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
_______________________________________________
pyar mailing list pyar-+ZN9ApsXKcFd+***@public.gmane.org
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
david weil
2012-03-04 23:59:54 UTC
Permalink
Post by Hernan Grecco
En realidad los strings de python son inmutables, lo mismo que los
tuples o los sets.
Algunas aclaraciones, no solo de lo quoteado acá arriba, sinó en general:

-los sets son mutables. (los frozen_set no lo són, al menos en cpython2.x)
-los strings son inmutables.

y los integers, también lo son. Pero el otro tema que se tocó por ahí
de costado, es tenér muchas instancias de un mismo integer. Aunque sea
inmutable uno puede tener muchas instancias de un mismo integer. Creo
que eso, no está especificado por el lenguaje y se deja a gusto del
implementador de la vm. En cpython, creo que normalmente para enteros
entre 0 y X, cuando crées un entero, te va a dar el que ya tenía
creado. Sin embargo para >X te da uno nuevo. Depende de la versión de
cpython que sea igualmente.

mis 2c.
dave
--
 There is no dark side of the moon really. Matter of fact it's all dark.
_______________________________________________
pyar mailing list pyar-+ZN9ApsXKcFd+***@public.gmane.org
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
Hernan Grecco
2012-03-05 00:06:06 UTC
Permalink
Post by david weil
-los sets son mutables. (los frozen_set no lo són, al menos en cpython2.x)
en python 3 tambien.

Debi haber puesto frozenset. disculpas,

Hernan
Post by david weil
Post by Hernan Grecco
En realidad los strings de python son inmutables, lo mismo que los
tuples o los sets.
-los strings son inmutables.
y los integers, también lo son. Pero el otro tema que se tocó por ahí
de costado, es tenér muchas instancias de un mismo integer. Aunque sea
inmutable uno puede tener muchas instancias de un mismo integer. Creo
que eso, no está especificado por el lenguaje y se deja a gusto del
implementador de la vm. En cpython, creo que normalmente para enteros
entre 0 y X, cuando crées un entero, te va a dar el que ya tenía
creado. Sin embargo para >X te da uno nuevo. Depende de la versión de
cpython que sea igualmente.
mis 2c.
dave
--
 There is no dark side of the moon really. Matter of fact it's all dark.
_______________________________________________
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
_______________________________________________
pyar mailing list pyar-+ZN9ApsXKcFd+***@public.gmane.org
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
Diva Satanica
2012-03-05 00:16:43 UTC
Permalink
Gracias totales :)
Post by david weil
Post by david weil
-los sets son mutables. (los frozen_set no lo són, al menos en
cpython2.x)
en python 3 tambien.
Debi haber puesto frozenset. disculpas,
Hernan
Post by david weil
Post by Hernan Grecco
En realidad los strings de python son inmutables, lo mismo que los
tuples o los sets.
-los strings son inmutables.
y los integers, también lo son. Pero el otro tema que se tocó por ahí
de costado, es tenér muchas instancias de un mismo integer. Aunque sea
inmutable uno puede tener muchas instancias de un mismo integer. Creo
que eso, no está especificado por el lenguaje y se deja a gusto del
implementador de la vm. En cpython, creo que normalmente para enteros
entre 0 y X, cuando crées un entero, te va a dar el que ya tenía
creado. Sin embargo para >X te da uno nuevo. Depende de la versión de
cpython que sea igualmente.
mis 2c.
dave
--
There is no dark side of the moon really. Matter of fact it's all dark.
_______________________________________________
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
_______________________________________________
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
Angel Java Lopez
2012-03-04 22:32:46 UTC
Permalink
Hola gente!

Ah! Interesante tema....

Hmmm... no me cierra lo de:

"Lo que no existe es la constante "con nombre" porque en python la
asignación es en realidad creación de alias para objetos."

Se me ocurren lenguajes donde puedo tener creacion de alias, pero si los
objetos apuntados son inmutables (como lo son los enteros y strings en
Java, .NET, etc... (no se si son inmutables los string en Python)),
entonces bastaria agregar "variables" writeonce (o assign-once) declarando
algo como

const ONE = 1

una "variable"/"alias"/"punterosiquierenverloasi" que se puede asignar una
vez y solo una vez, para tener semantica de constantes.

Es asi? O como es como escribe Roberto, un tema derivado de tener alias? O
hay algo mas en Python que impide o por lo menos complica tener constantes?

No se si me explique bien... a ver... busco, y encuentro via Google:
http://software-carpentry.org/4_0/python/alias/

If the data in question is immutable—i.e., if it cannot be modified in
place—then aliasing doesn’t matter

Ahi muestra aliasing de dos nombres contra el string "isaac". Eso es lo que
pasa en Java y en .NET. Sin embargo, ahora que lo leo, me surge una duda:
el autor no grafica aliasing para enteros en Python (pone un arreglo donde
cada elemento apunta a un numero 1 , "diferente", en vez de que cada
elemento apunte al mismo 1). Eso de no tener aliasing de enteros, aparece
hasta en implementaciones de Smalltalk, que seria el "papa de todos los
aliasing". ;-)

Mientras, buscando, encontre
http://stackoverflow.com/questions/2682745/creating-constant-in-python
http://code.activestate.com/recipes/65207-constants-in-python/?in=user-97991

Nos leemos!

Angel "Java" Lopez
http://www.ajlopez.com/
http://twitter.com/ajlopez
Post by Roberto Alsina
Post by Diva Satanica
Hola gente preguntonta por no decir (B.....DA), porque no existe la
constante en python?
PS: Valen las puteadas por la pregunta
Gracias, saludos
<explicación probablemente errónea>
Las constantes existen! 2 es una constante :-)
Lo que no existe es la constante "con nombre" porque en python la
asignación es en realidad creación de alias para objetos.
O sea, x = 2 no "guarda 2 en x" si no que "crea un nombre x que apunta al
objeto 2". Con esa semántica, las constantes no tienen mucha cabida.
</explicación probablemente errónea>
______________________________**_________________
http://listas.python.org.ar/**listinfo/pyar<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
Roberto Alsina
2012-03-04 22:35:29 UTC
Permalink
Post by Angel Java Lopez
Hola gente!
Ah! Interesante tema....
"Lo que no existe es la constante "con nombre" porque en python la
asignación es en realidad creación de alias para objetos."
Se me ocurren lenguajes donde puedo tener creacion de alias, pero si
los objetos apuntados son inmutables (como lo son los enteros y
strings en Java, .NET, etc... (no se si son inmutables los string en
Python)), entonces bastaria agregar "variables" writeonce (o
assign-once) declarando algo como
Si, los strings son inmutables en Python.
Post by Angel Java Lopez
const ONE = 1
una "variable"/"alias"/"punterosiquierenverloasi" que se puede asignar
una vez y solo una vez, para tener semantica de constantes.
Y de ahí en mas, si hago ONE = 2 es error? En tiempo de compilación o de
ejecución?
Post by Angel Java Lopez
Es asi? O como es como escribe Roberto, un tema derivado de tener
alias? O hay algo mas en Python que impide o por lo menos complica
tener constantes?
http://software-carpentry.org/4_0/python/alias/
If the data in question is immutable---i.e., if it cannot be modified
in place---then aliasing doesn't matter
Ahi muestra aliasing de dos nombres contra el string "isaac". Eso es
lo que pasa en Java y en .NET. Sin embargo, ahora que lo leo, me surge
una duda: el autor no grafica aliasing para enteros en Python (pone un
arreglo donde cada elemento apunta a un numero 1 , "diferente", en vez
de que cada elemento apunte al mismo 1). Eso de no tener aliasing de
enteros, aparece hasta en implementaciones de Smalltalk, que seria el
"papa de todos los aliasing". ;-)
Y acá te pregunto: como creás un segundo 1 distinto de este 1 en python? ;-)
No es importante en el caso de los enteros porque son inmutables y
"fungibles", pero, con objetos en general?
Angel Java Lopez
2012-03-04 23:05:59 UTC
Permalink
Ah! con respecto a:

"Y de ahí en mas, si hago ONE = 2 es error? En tiempo de compilación o de
ejecución? "

yo pondria que

ONE = 2

es un error de ejecucion, si yo tuviera que implementarlo. No conozco todas
las caracteristicas de Python para decir que el compilador podria
detectarlo en todos los casos.

Con respecto a:
"Y acá te pregunto: como creás un segundo 1 distinto de este 1 en python?
;-)
No es importante en el caso de los enteros porque son inmutables y
"fungibles", pero, con objetos en general? "

Me limito al tema del thread: por que no hay constantes en Python?
Justamente, en otros lenguajes hay constantes, pero contra elementos
inmutables, como enteros y strings, si estos lo son. Por eso, no planteo el
tema para objetos en general, solo para constantes como en otros lenguajes,
en gral: enteros y strings, que suelen ser inmutables. Me llamo la atencion
la pregunta inicial: por que no hay constantes en Python?

Agrego pregunta: hay simbolos en Python, como en Ruby? En Ruby se puede
poner :lunes, :martes, :miercoles...

Desconozco Python internamente, pero en otros lenguajes se crea un distinto
1 a cada momento que ese 1 se obtiene de distintos origenes, por ejemplo
dos registros en una base de datos, o dos entradas de consola por parte del
usuario. La implementacion interna no "se mata" viendo que el numero 123
que recien ingreso el usuario, y que convirtio a entero, YA esta en otro
lado.

Se podria usar un patron Flyweight
http://en.wikipedia.org/wiki/Flyweight_pattern

pero en general los lenguajes no lo hacen, para enteros ni para strings
(una vez lo implemente para caracteres, pero fue en los tiempos donde no
tenia Unicode ;-). Es decir, esos lenguajes no se toman el trabajo de que
todos los 1 del programa en ejecucion sean el MISMO 1 (en el mismo lugar de
memoria, digamos).

Por supuesto, al ser enteros y strings inmutables, que dos 1, o dos "isaac"
sean o no el mismo, solo tienen implicancias en el tema de manejo de
memoria.

Y ahora si, me aparto mas del thread:

En java

String name = "isaac";
String name2 = "isaac";

el compilador se toma el trabajo de hacer que name y name2 apunten al mismo
objeto "isaac", confiando en la inmutabilidad. Sospecho que lo hace HASTA
CUANDO name y name2 estan definidos en DOS archivos distintos.

Pero no lo hace si en algun momento name y name2 se llenan por ingreso
desde consola y el usuario pone dos veces "isaac". En ese caso:

name == name2 // es falso
name.equals(name2) // es verdadero

que recuerde

name.getHashCode() == name2.getHashCode()

Para que sean el MISMO string, se recurre a name.intern(), name2.intern(),
que es un resabio de los Symbol de Smalltalk (y supongo los symbol de Ruby).

En .NET, CLR en general, se tomo la decision de

name == name2 // verdadero, porque para los strings se tomo la decision de
hacerlos value objects, no importan que sean distintos objetos, importan
que tengan el mismo contenido
name.Equals(name2) // verdadero

Disculpen lo largo, y algo offtopic, pero el tema me interesa. Estoy por
implementar un interprete mini-python, y quiero conocer bien cual es su
semantica.

Gracias a Hernan, por la informacion sobre lo inmutable de los string en
Python. Curiosamente, en Ruby no lo son:
http://stackoverflow.com/questions/2608493/why-did-matz-choose-to-make-strings-mutable-by-default-in-ruby
http://stackoverflow.com/questions/93091/why-cant-strings-be-mutable-in-java-and-net

Nos leemos!

Angel "Java" Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez
Post by Angel Java Lopez
Hola gente!
Ah! Interesante tema....
"Lo que no existe es la constante "con nombre" porque en python la
asignación es en realidad creación de alias para objetos."
Se me ocurren lenguajes donde puedo tener creacion de alias, pero si los
objetos apuntados son inmutables (como lo son los enteros y strings en
Java, .NET, etc... (no se si son inmutables los string en Python)),
entonces bastaria agregar "variables" writeonce (o assign-once) declarando
algo como
Si, los strings son inmutables en Python.
const ONE = 1
una "variable"/"alias"/"punterosiquierenverloasi" que se puede asignar
una vez y solo una vez, para tener semantica de constantes.
Y de ahí en mas, si hago ONE = 2 es error? En tiempo de compilación o de
ejecución?
Es asi? O como es como escribe Roberto, un tema derivado de tener alias?
O hay algo mas en Python que impide o por lo menos complica tener
constantes?
http://software-carpentry.org/4_0/python/alias/
If the data in question is immutable—i.e., if it cannot be modified in
place—then aliasing doesn’t matter
Ahi muestra aliasing de dos nombres contra el string "isaac". Eso es lo
que pasa en Java y en .NET. Sin embargo, ahora que lo leo, me surge una
duda: el autor no grafica aliasing para enteros en Python (pone un arreglo
donde cada elemento apunta a un numero 1 , "diferente", en vez de que cada
elemento apunte al mismo 1). Eso de no tener aliasing de enteros, aparece
hasta en implementaciones de Smalltalk, que seria el "papa de todos los
aliasing". ;-)
Y acá te pregunto: como creás un segundo 1 distinto de este 1 en python? ;-)
No es importante en el caso de los enteros porque son inmutables y
"fungibles", pero, con objetos en general?
_______________________________________________
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
Alejandro J. Cura
2012-03-04 22:47:25 UTC
Permalink
Post by Diva Satanica
Hola gente preguntonta por no decir (B.....DA), porque no existe la
constante en python?
A mi entender, lo que en otros lenguajes llaman "constantes" no
existen debido a que es una decisión de diseño de Python el tratarte
como un adulto responsable.
O sea, no existe la "protección" de variables de instancias y de
métodos que hay en java o C++, por ejemplo. Porque esa protección es
una ilusión; cualquier programador determinado la puede saltear si lo
necesita.

Por eso, si a vos te sirve hacer:

True = False

en python 2.x podés.

saludos,
--
alecu
_______________________________________________
pyar mailing list pyar-+ZN9ApsXKcFd+***@public.gmane.org
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
John Rowland Lenton
2012-03-04 23:14:35 UTC
Permalink
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.
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.
Angel Java Lopez
2012-03-05 00:16:35 UTC
Permalink
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.

Gracias a todos por tan interesante tema y discusion.

Nos leemos!

Angel "Java" Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez
Post by John Rowland Lenton
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.
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.
_______________________________________________
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
Ricardo Araoz
2012-03-05 00:40:46 UTC
Permalink
Post by Angel Java Lopez
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,
- 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?
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,
ONE = 1
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-+ZN9ApsXKcFd+***@public.gmane.org
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
Diva Satanica
2012-03-05 00:43:15 UTC
Permalink
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.
Post by Ricardo Araoz
Post by Angel Java Lopez
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,
- 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?
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,
ONE = 1
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).
_______________________________________________
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
Angel Java Lopez
2012-03-05 09:44:27 UTC
Permalink
Hola gente!

Vayamos al uso en el dia a dia.

Yo distingo dos casos: constantes definidas por otros, y constantes
definidas por el programador que esta construyendo algo.

El primer caso me parece el mas frecuente. Como comentaron en este thread,
el caso clasico es pi. En Java, esta un Math.PI, es mas, el valor que tiene
que devolver esta sujeto a una especificacion de Java, y hasta esta
definido que tiene que devolver Math.sin(x) y demas, para que una
implementacion de Java se considere una implementacion correcta de Java.

El de constantes definidas por el programador/equipo, tiene dos vertientes.
La primera, es para mi, mas rara: definir constantes como PI, con un valor
que importa en la ejecucion. A no ser que uno comience un paquete
matematico con nuevas constantes, o alguna libreria con strings magicos,
puestos como constantes, no lo vi usado mucho ultimamente.

Otro uso de constantes por el programador/equipo, es mas corriente. Es
simplemente para recordar algunas cosas mejor, tipo en una maquina de
estado recordar los estados de algo de mejor forma:

PENDING = 0
OPENED = 1
CLOSED = 2
....

Ahora bien, todo el codigo se escribe SIN IMPORTAR que luego eso valores se
cambien. El programa sigue funcionando si luego alguien pone:

PENDING = 1
OPENED = 2
CLOSED = 3
....

(por supuesto, estamos hablando de un programa en memoria, donde no se
hayan serializado/deserializado esos valores en otro lado, disco, base de
datos, etc...)

O en juego de tablero, recordar los colores de los jugadores:

WHITE = 0
BLACK = 1

Eso, desde hace unas decadas, se resuelve en otros lenguajes, con enums. O
en Ruby, Smalltalk, con simbolos.

Hay enum en Python? Y simbolos?

Nos leemos!

Angel "Java" Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez
Post by Ricardo Araoz
Post by Angel Java Lopez
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,
- 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?
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,
ONE = 1
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).
_______________________________________________
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
Mariano Guerra
2012-03-05 11:12:56 UTC
Permalink
Post by Angel Java Lopez
Hola gente!
Vayamos al uso en el dia a dia.
Yo distingo dos casos: constantes definidas por otros, y constantes
definidas por el programador que esta construyendo algo.
El primer caso me parece el mas frecuente. Como comentaron en este thread,
el caso clasico es pi. En Java, esta un Math.PI, es mas, el valor que tiene
que devolver esta sujeto a una especificacion de Java, y hasta esta definido
que tiene que devolver Math.sin(x) y demas, para que una implementacion de
Java se considere una implementacion correcta de Java.
El de constantes definidas por el programador/equipo, tiene dos vertientes.
La primera, es para mi, mas rara: definir constantes como PI, con un valor
que importa en la ejecucion. A no ser que uno comience un paquete matematico
con nuevas constantes, o alguna libreria con strings magicos, puestos como
constantes, no lo vi usado mucho ultimamente.
Otro uso de constantes por el programador/equipo, es mas corriente. Es
simplemente para recordar algunas cosas mejor, tipo en una maquina de estado
PENDING = 0
OPENED = 1
CLOSED = 2
....
Ahora bien, todo el codigo se escribe SIN IMPORTAR que luego eso valores se
PENDING = 1
OPENED = 2
CLOSED = 3
....
(por supuesto, estamos hablando de un programa en memoria, donde no se hayan
serializado/deserializado esos valores en otro lado, disco, base de datos,
etc...)
WHITE = 0
BLACK = 1
Eso, desde hace unas decadas, se resuelve en otros lenguajes, con enums. O
en Ruby, Smalltalk, con simbolos.
Hay enum en Python? Y simbolos?
podes hacer enums

http://code.activestate.com/recipes/413486-first-class-enums-in-python/

no hay simbolos/atomos
_______________________________________________
pyar mailing list pyar-+ZN9ApsXKcFd+***@public.gmane.org
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
fisa
2012-03-05 16:43:14 UTC
Permalink
El día 5 de marzo de 2012 06:44, Angel Java Lopez
Post by Angel Java Lopez
Hola gente!
Vayamos al uso en el dia a dia.
Yo distingo dos casos: constantes definidas por otros, y constantes
definidas por el programador que esta construyendo algo.
El primer caso me parece el mas frecuente. Como comentaron en este thread,
el caso clasico es pi. En Java, esta un Math.PI, es mas, el valor que tiene
que devolver esta sujeto a una especificacion de Java, y hasta esta definido
que tiene que devolver Math.sin(x) y demas, para que una implementacion de
Java se considere una implementacion correcta de Java.
El de constantes definidas por el programador/equipo, tiene dos vertientes.
La primera, es para mi, mas rara: definir constantes como PI, con un valor
que importa en la ejecucion. A no ser que uno comience un paquete matematico
con nuevas constantes, o alguna libreria con strings magicos, puestos como
constantes, no lo vi usado mucho ultimamente.
Otro uso de constantes por el programador/equipo, es mas corriente. Es
simplemente para recordar algunas cosas mejor, tipo en una maquina de estado
PENDING = 0
OPENED = 1
CLOSED = 2
....
Ahora bien, todo el codigo se escribe SIN IMPORTAR que luego eso valores se
PENDING = 1
OPENED = 2
CLOSED = 3
....
(por supuesto, estamos hablando de un programa en memoria, donde no se hayan
serializado/deserializado esos valores en otro lado, disco, base de datos,
etc...)
WHITE = 0
BLACK = 1
Eso, desde hace unas decadas, se resuelve en otros lenguajes, con enums. O
en Ruby, Smalltalk, con simbolos.
Hay enum en Python? Y simbolos?
Nos leemos!
Angel "Java" Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez
Entiendo los dos casos de uso, pero fijate que en ningún punto de
ellos el hecho de que estos valores definidos sean imposibles de
modificar es mandatorio. Esos casos se resuelven perfectamente con
variables, el concepto de "constante" no es mandatorio.

Al definir PENDING, CLOSING, WHITE, etc, tu requerimiento es "quiero
definir lo que esto significa, para luego usar un nombre en lugar de
escribir el valor siempre, y poder modificar mi código sin en algún
momento quiero cambiar el valor asociado sin tener que recorrer todo
el código buscando el valor, solo cambio la definición".
Ese requerimiento es perfectamente realizable usando variables :)

Volviendo a lo que otro ya mencionó, en python se asume que el
programador no es tonto, y no hace lo de otros lenguajes, de limitar
al programador para evitar que se equivoque.
Si tenés un valor que definís en un solo lado y luego siempre usas,
simplemente definís una variable, no hay razón para que el intérprete
te tenga que limitar si en algún momento querés conscientemente
cambiar su valor. La única razón sería evitar que el programador se
equivoque, pero eso es responsabilidad del programador. La capacidad
de alguien para equivocarse no es razón para limitar a otro que puede
estar queriendo hacer lo mismo pero conscientemente.
--
fisa  -  Juan Pedro Fisanotti
_______________________________________________
pyar mailing list pyar-+ZN9ApsXKcFd+***@public.gmane.org
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
Adrian Roldan
2012-03-05 21:12:53 UTC
Permalink
Post by fisa
El día 5 de marzo de 2012 06:44, Angel Java Lopez
Post by Angel Java Lopez
Hola gente!
Vayamos al uso en el dia a dia.
Yo distingo dos casos: constantes definidas por otros, y constantes
definidas por el programador que esta construyendo algo.
El primer caso me parece el mas frecuente. Como comentaron en este
thread,
Post by Angel Java Lopez
el caso clasico es pi. En Java, esta un Math.PI, es mas, el valor que
tiene
Post by Angel Java Lopez
que devolver esta sujeto a una especificacion de Java, y hasta esta
definido
Post by Angel Java Lopez
que tiene que devolver Math.sin(x) y demas, para que una implementacion
de
Post by Angel Java Lopez
Java se considere una implementacion correcta de Java.
El de constantes definidas por el programador/equipo, tiene dos
vertientes.
Post by Angel Java Lopez
La primera, es para mi, mas rara: definir constantes como PI, con un
valor
Post by Angel Java Lopez
que importa en la ejecucion. A no ser que uno comience un paquete
matematico
Post by Angel Java Lopez
con nuevas constantes, o alguna libreria con strings magicos, puestos
como
Post by Angel Java Lopez
constantes, no lo vi usado mucho ultimamente.
Otro uso de constantes por el programador/equipo, es mas corriente. Es
simplemente para recordar algunas cosas mejor, tipo en una maquina de
estado
Post by Angel Java Lopez
PENDING = 0
OPENED = 1
CLOSED = 2
....
Ahora bien, todo el codigo se escribe SIN IMPORTAR que luego eso valores
se
Post by Angel Java Lopez
PENDING = 1
OPENED = 2
CLOSED = 3
....
(por supuesto, estamos hablando de un programa en memoria, donde no se
hayan
Post by Angel Java Lopez
serializado/deserializado esos valores en otro lado, disco, base de
datos,
Post by Angel Java Lopez
etc...)
WHITE = 0
BLACK = 1
Eso, desde hace unas decadas, se resuelve en otros lenguajes, con enums.
O
Post by Angel Java Lopez
en Ruby, Smalltalk, con simbolos.
Hay enum en Python? Y simbolos?
Nos leemos!
Angel "Java" Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez
Entiendo los dos casos de uso, pero fijate que en ningún punto de
ellos el hecho de que estos valores definidos sean imposibles de
modificar es mandatorio. Esos casos se resuelven perfectamente con
variables, el concepto de "constante" no es mandatorio.
Al definir PENDING, CLOSING, WHITE, etc, tu requerimiento es "quiero
definir lo que esto significa, para luego usar un nombre en lugar de
escribir el valor siempre, y poder modificar mi código sin en algún
momento quiero cambiar el valor asociado sin tener que recorrer todo
el código buscando el valor, solo cambio la definición".
Ese requerimiento es perfectamente realizable usando variables :)
Volviendo a lo que otro ya mencionó, en python se asume que el
programador no es tonto, y no hace lo de otros lenguajes, de limitar
al programador para evitar que se equivoque.
Si tenés un valor que definís en un solo lado y luego siempre usas,
simplemente definís una variable, no hay razón para que el intérprete
te tenga que limitar si en algún momento querés conscientemente
cambiar su valor. La única razón sería evitar que el programador se
equivoque, pero eso es responsabilidad del programador. La capacidad
de alguien para equivocarse no es razón para limitar a otro que puede
estar queriendo hacer lo mismo pero conscientemente.
--
fisa - Juan Pedro Fisanotti
_______________________________________________
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
Yo creía que una constante era un "objeto" que no cambiaba su "valor"
mientras vivía. Eso sirve para dar acceso de sólo lectura y no permitir que
el objeto sea modificado. Como en python el tipado es dinámico y no tengo
que manejar accesos ni siquiera había pensado en las constantes.

Saludos.
fisa
2012-03-05 21:19:36 UTC
Permalink
El día 5 de marzo de 2012 18:12, Adrian Roldan
Post by Adrian Roldan
Post by fisa
El día 5 de marzo de 2012 06:44, Angel Java Lopez
Post by Angel Java Lopez
Hola gente!
Vayamos al uso en el dia a dia.
Yo distingo dos casos: constantes definidas por otros, y constantes
definidas por el programador que esta construyendo algo.
El primer caso me parece el mas frecuente. Como comentaron en este thread,
el caso clasico es pi. En Java, esta un Math.PI, es mas, el valor que tiene
que devolver esta sujeto a una especificacion de Java, y hasta esta definido
que tiene que devolver Math.sin(x) y demas, para que una implementacion de
Java se considere una implementacion correcta de Java.
El de constantes definidas por el programador/equipo, tiene dos vertientes.
La primera, es para mi, mas rara: definir constantes como PI, con un valor
que importa en la ejecucion. A no ser que uno comience un paquete matematico
con nuevas constantes, o alguna libreria con strings magicos, puestos como
constantes, no lo vi usado mucho ultimamente.
Otro uso de constantes por el programador/equipo, es mas corriente. Es
simplemente para recordar algunas cosas mejor, tipo en una maquina de estado
PENDING = 0
OPENED = 1
CLOSED = 2
....
Ahora bien, todo el codigo se escribe SIN IMPORTAR que luego eso valores se
PENDING = 1
OPENED = 2
CLOSED = 3
....
(por supuesto, estamos hablando de un programa en memoria, donde no se hayan
serializado/deserializado esos valores en otro lado, disco, base de datos,
etc...)
WHITE = 0
BLACK = 1
Eso, desde hace unas decadas, se resuelve en otros lenguajes, con enums. O
en Ruby, Smalltalk, con simbolos.
Hay enum en Python? Y simbolos?
Nos leemos!
Angel "Java" Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez
Entiendo los dos casos de uso, pero fijate que en ningún punto de
ellos el hecho de que estos valores definidos sean imposibles de
modificar es mandatorio. Esos casos se resuelven perfectamente con
variables, el concepto de "constante" no es mandatorio.
Al definir PENDING, CLOSING, WHITE, etc, tu requerimiento es "quiero
definir lo que esto significa, para luego usar un nombre en lugar de
escribir el valor siempre, y poder modificar mi código sin en algún
momento quiero cambiar el valor asociado sin tener que recorrer todo
el código buscando el valor, solo cambio la definición".
Ese requerimiento es perfectamente realizable usando variables :)
Volviendo a lo que otro ya mencionó, en python se asume que el
programador no es tonto, y no hace lo de otros lenguajes, de limitar
al programador para evitar que se equivoque.
Si tenés un valor que definís en un solo lado y luego siempre usas,
simplemente definís una variable, no hay razón para que el intérprete
te tenga que limitar si en algún momento querés conscientemente
cambiar su valor. La única razón sería evitar que el programador se
equivoque, pero eso es responsabilidad del programador. La capacidad
de alguien para equivocarse no es razón para limitar a otro que puede
estar queriendo hacer lo mismo pero conscientemente.
--
fisa  -  Juan Pedro Fisanotti
_______________________________________________
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
Yo creía que una constante era un "objeto" que no cambiaba su "valor"
mientras vivía. Eso sirve para dar acceso de sólo lectura y no permitir que
el objeto sea modificado. Como en python el tipado es dinámico y no tengo
que manejar accesos ni siquiera había pensado en las constantes.
Saludos.
No, claro, eso es otro tema que también se tocó en el hilo, la
cuestipón de objetos mutables e inmutables.
--
fisa  -  Juan Pedro Fisanotti
_______________________________________________
pyar mailing list pyar-+ZN9ApsXKcFd+***@public.gmane.org
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
Ricardo Araoz
2012-03-05 22:46:41 UTC
Permalink
Post by Angel Java Lopez
Hola gente!
Vayamos al uso en el dia a dia.
Yo distingo dos casos: constantes definidas por otros, y constantes
definidas por el programador que esta construyendo algo.
El primer caso me parece el mas frecuente. Como comentaron en este
thread, el caso clasico es pi. En Java, esta un Math.PI, es mas, el
valor que tiene que devolver esta sujeto a una especificacion de Java,
y hasta esta definido que tiene que devolver Math.sin(x) y demas, para
que una implementacion de Java se considere una implementacion
correcta de Java.
El de constantes definidas por el programador/equipo, tiene dos
vertientes. La primera, es para mi, mas rara: definir constantes como
PI, con un valor que importa en la ejecucion. A no ser que uno
comience un paquete matematico con nuevas constantes, o alguna
libreria con strings magicos, puestos como constantes, no lo vi usado
mucho ultimamente.
Otro uso de constantes por el programador/equipo, es mas corriente. Es
simplemente para recordar algunas cosas mejor, tipo en una maquina de
PENDING = 0
OPENED = 1
CLOSED = 2
....
Ahora bien, todo el codigo se escribe SIN IMPORTAR que luego eso
PENDING = 1
OPENED = 2
CLOSED = 3
....
(por supuesto, estamos hablando de un programa en memoria, donde no se
hayan serializado/deserializado esos valores en otro lado, disco, base
de datos, etc...)
WHITE = 0
BLACK = 1
Eso, desde hace unas decadas, se resuelve en otros lenguajes, con
enums. O en Ruby, Smalltalk, con simbolos.
Hay enum en Python? Y simbolos?
Para aprender python tenés : http://python.org.ar/pyar/AprendiendoPython
Supongo que debe haber algún lugar equivalente para Java, Ruby o
Smalltalk. Pero no me cuentes cuál es, cuando me interese conocer alguno
de esos lenguages me inscribo en una lista del mismo y pregunto.

_______________________________________________
pyar mailing list pyar-+ZN9ApsXKcFd+***@public.gmane.org
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
Angel Java Lopez
2012-03-07 13:21:06 UTC
Permalink
Ah! Gracias Ricardo por el enlace. Lo habia visto al pasar, pero no lo
habia anotado

Agregado a http://delicious.com/ajlopez/python+tutorial

Estoy preparando una charla de Python para programadores .NET, y lo que
comentan en esta lista, y lo que ha hecho la comunidad en el sitio, me va a
servir de mucho.

Aprovecho a felicitar por el video presentando la actividad en Argentina,
muy bueno!... Curiosamente, lo envie a otras listas, y alguien me contesto
que PyAr es "amor" en hindi ;-)

Nos leemos!

Angel "Java" Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez
Post by Ricardo Araoz
Post by Angel Java Lopez
Hola gente!
Vayamos al uso en el dia a dia.
Yo distingo dos casos: constantes definidas por otros, y constantes
definidas por el programador que esta construyendo algo.
El primer caso me parece el mas frecuente. Como comentaron en este
thread, el caso clasico es pi. En Java, esta un Math.PI, es mas, el
valor que tiene que devolver esta sujeto a una especificacion de Java,
y hasta esta definido que tiene que devolver Math.sin(x) y demas, para
que una implementacion de Java se considere una implementacion
correcta de Java.
El de constantes definidas por el programador/equipo, tiene dos
vertientes. La primera, es para mi, mas rara: definir constantes como
PI, con un valor que importa en la ejecucion. A no ser que uno
comience un paquete matematico con nuevas constantes, o alguna
libreria con strings magicos, puestos como constantes, no lo vi usado
mucho ultimamente.
Otro uso de constantes por el programador/equipo, es mas corriente. Es
simplemente para recordar algunas cosas mejor, tipo en una maquina de
PENDING = 0
OPENED = 1
CLOSED = 2
....
Ahora bien, todo el codigo se escribe SIN IMPORTAR que luego eso
PENDING = 1
OPENED = 2
CLOSED = 3
....
(por supuesto, estamos hablando de un programa en memoria, donde no se
hayan serializado/deserializado esos valores en otro lado, disco, base
de datos, etc...)
WHITE = 0
BLACK = 1
Eso, desde hace unas decadas, se resuelve en otros lenguajes, con
enums. O en Ruby, Smalltalk, con simbolos.
Hay enum en Python? Y simbolos?
Para aprender python tenés : http://python.org.ar/pyar/AprendiendoPython
Supongo que debe haber algún lugar equivalente para Java, Ruby o
Smalltalk. Pero no me cuentes cuál es, cuando me interese conocer alguno
de esos lenguages me inscribo en una lista del mismo y pregunto.
_______________________________________________
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
Ezequiel
2012-03-07 15:12:04 UTC
Permalink
Post by Angel Java Lopez
Estoy preparando una charla de Python para programadores .NET, y lo que
comentan en esta lista, y lo que ha hecho la comunidad en el sitio, me va a
servir de mucho.
Hola Ángel, ¿esa charla dónde va a ser? Estoy muy interesado :)

Saludos.
--
Ezequiel
http://flickr.com/mikelpierre
http://twitter.com/mikelpierre
_______________________________________________
pyar mailing list pyar-+ZN9ApsXKcFd+***@public.gmane.org
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
Angel Java Lopez
2012-03-07 15:54:42 UTC
Permalink
Gracias por el interes, Ezequiel.

La charla sera de 4 horas, en dos reuniones de 2. Sera virtual, asi que se
podra asistir online, o luego se publica el video. La organiza la gente de
Alt.NET Hispano. Fecha a confirmar, en dos sabados de Abril, espero. Pero
no es solo de Python, sino que apunta a ver 6 lenguajes: Python, Ruby,
Erlang, Clojure, Scala, Javascript en NodeJs.

Un resumen de una anterior charla, presencial, con el mismo temario, en
http://msmvps.com/blogs/lopez/archive/2012/03/03/esos-raros-lenguajes-nuevos-javascript-node-scala-erlang-clojure-ruby-python.aspx
Post by Ezequiel
Post by Angel Java Lopez
Estoy preparando una charla de Python para programadores .NET, y lo que
comentan en esta lista, y lo que ha hecho la comunidad en el sitio, me
va a
Post by Angel Java Lopez
servir de mucho.
Hola Ángel, ¿esa charla dónde va a ser? Estoy muy interesado :)
Saludos.
--
Ezequiel
http://flickr.com/mikelpierre
http://twitter.com/mikelpierre
_______________________________________________
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
fisa
2012-03-07 15:45:59 UTC
Permalink
El día 7 de marzo de 2012 10:21, Angel Java Lopez
Ah! Gracias Ricardo por el enlace. Lo habia visto al pasar, pero no lo habia
anotado
Agregado a  http://delicious.com/ajlopez/python+tutorial
Estoy preparando una charla de Python para programadores .NET, y lo que
comentan en esta lista, y lo que ha hecho la comunidad en el sitio, me va a
servir de mucho.
Hace unos años di una charla llamada "Pythonificándose desde .NET",
aquí están todavía las slides:
https://docs.google.com/present/view?id=ddfg8qh9_92c6996nhh

Saludos!
--
fisa  -  Juan Pedro Fisanotti
_______________________________________________
pyar mailing list pyar-+ZN9ApsXKcFd+***@public.gmane.org
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
Ezequiel
2012-03-07 15:52:51 UTC
Permalink
Post by fisa
Post by Angel Java Lopez
Estoy preparando una charla de Python para programadores .NET, y lo que
comentan en esta lista, y lo que ha hecho la comunidad en el sitio, me va a
servir de mucho.
Hace unos años di una charla llamada "Pythonificándose desde .NET",
https://docs.google.com/present/view?id=ddfg8qh9_92c6996nhh
fisa  -  Juan Pedro Fisanotti
Gracias, Juan Pedro. Voy a darle una mirada.
--
Ezequiel
_______________________________________________
pyar mailing list pyar-+ZN9ApsXKcFd+***@public.gmane.org
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
Facundo Batista
2012-03-05 03:55:18 UTC
Permalink
Post by Diva Satanica
Hola gente preguntonta por no decir (B.....DA), porque no existe la
constante en python?
Hola!

No existen las constantes por una decisión de diseño. Sin embargo, por
*convención*, si nombrás una variable global con mayúscula, *todos*
esperan que esa variable no cambie de valor.

Ejemplo:

PI = 3.14

Si vos ves eso en el código, esperás que PI siempre valga 3.14, y que
el código lo use, pero que jamás lo cambie. Es una convención. Python
te trata como un adulto responsable capaz de seguir tal.

Por otro lado, si vos para un caso de prueba raro querés cambiar ese
valor de PI, Python no se va quejar. Pero si vos en código cambiás ese
valor, los otros programadores se van a quejar ;)
Post by Diva Satanica
PS: Valen las puteadas por la pregunta
No, no valen. Puntos extras por contestar sin putear, porque somos una
comunidad re-copada (y sé que vos lo sabés).

Slds.
--
.    Facundo

Blog: http://www.taniquetil.com.ar/plog/
PyAr: http://www.python.org/ar/
_______________________________________________
pyar mailing list pyar-+ZN9ApsXKcFd+***@public.gmane.org
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
Lucio Torre
2012-03-05 04:05:48 UTC
Permalink
 PI = 3.14
Si vos ves eso en el código, esperás que PI siempre valga 3.14, y que
el código lo use, pero que jamás lo cambie. Es una convención. Python
te trata como un adulto responsable capaz de seguir tal.
Que mal ejemplo :)

In [1]: import math
In [2]: math.pi
Out[2]: 3.1415926535897931

Lucio
_______________________________________________
pyar mailing list pyar-+ZN9ApsXKcFd+***@public.gmane.org
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
John Rowland Lenton
2012-03-05 10:09:10 UTC
Permalink
Post by Lucio Torre
 PI = 3.14
Si vos ves eso en el código, esperás que PI siempre valga 3.14, y que
el código lo use, pero que jamás lo cambie. Es una convención. Python
te trata como un adulto responsable capaz de seguir tal.
Que mal ejemplo :)
In [1]: import math
In [2]: math.pi
Out[2]: 3.1415926535897931
no, qué *buen* ejemplo
Post by Lucio Torre
Post by Lucio Torre
import math
math.pi
4.0
Ricardo Araoz
2012-03-05 22:40:04 UTC
Permalink
Post by Lucio Torre
Post by Facundo Batista
PI = 3.14
Si vos ves eso en el código, esperás que PI siempre valga 3.14, y que
el código lo use, pero que jamás lo cambie. Es una convención. Python
te trata como un adulto responsable capaz de seguir tal.
Que mal ejemplo :)
In [1]: import math
In [2]: math.pi
Out[2]: 3.1415926535897931
no, qué *buen* ejemplo
Post by Lucio Torre
Post by Facundo Batista
Post by Lucio Torre
import math
math.pi
4.0
Cómo???

PyCrust 0.9.5 - The Flakiest Python Shell
Python 2.6.6 (r266:84292, Feb 4 2012, 06:09:35)
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
Post by Lucio Torre
Post by Facundo Batista
import math
math.pi
3.1415926535897931
_______________________________________________
pyar mailing list pyar-+ZN9ApsXKcFd+***@public.gmane.org
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
Miguel Barraza
2012-03-05 22:46:50 UTC
Permalink
hola!, como me había presentado hace bastante por aquí, y había comentado:
aún sigo peleando con python, pero ya logré que mi screen reader me lea la
indentación, así que ya ando programando con este fabuloso lenguaje.



mi consulta es la siguiente:

ando programando servidores de juegos con sockets (para manejo de
audiojuegos) juegos de audio para personas ciegas.

pero necesito que este servidor corra en una máquina con ip fija, obviamente
las pruebas lo hago siempre en mi máquina y cuando está listo lo subo al
servidor con las actualizaciones.

pero quisiera consultarles alguien conoce algún servidor (gratuito dudo pero
quien sabe) o por lo menos a bajo costo para poder correr este script y
empezar con las pruebas de estos juegos. en lo posible con posibilidad de
ampliar, ya que si va bien, luego buscaré la forma de poder sumar mas juegos
y sostener los costos del servidor.



en argentina vi caros los vps, pero en usa ahi algunos muy baratos, pero por
ahí ud conoce alguno de mas confianza, o alguno que brinde webhosting con
acceso shell para correr un servidor de sockets.



¿cual conocen?

¿que tal su experiencia con ese servidor?

¿cuanto saldría el plan mas económico como para empezar?



gracias.



un saludo a todos!.



atte, Miguel

twitter: @barrazamiguel

skype: miguelbarraza2015

_______________________________________________
pyar mailing list pyar-+ZN9ApsXKcFd+***@public.gmane.org
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
Luciano Campagnolo
2012-03-05 23:42:57 UTC
Permalink
Post by Miguel Barraza
consultarles alguien conoce algún servidor (gratuito d
Hola,
Podes usar Amazon AWS [1] for free por un año e ir viendo donde
hostear. Tene en cuenta la ubicación relativamente reciente en Sao
Paulo [2] para mejorar performance desde Argentina.

Salutes

[1] https://aws.amazon.com/es/free/
[2] http://aws.amazon.com/es/about-aws/whats-new/2011/12/14/announcing-the-south-america-sao-paulo-region/#
_______________________________________________
pyar mailing list pyar-+ZN9ApsXKcFd+***@public.gmane.org
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
Miguel Barraza
2012-03-06 01:47:10 UTC
Permalink
perfecto, muchísimas gracias, ahora revisaré y lo probaré.

gracias!.

atte, Miguel

Subject: Re: [pyar] servidores recomendados para script python con sockets
Post by Miguel Barraza
consultarles alguien conoce algún servidor (gratuito d
Hola,
Podes usar Amazon AWS [1] for free por un año e ir viendo donde
hostear. Tene en cuenta la ubicación relativamente reciente en Sao
Paulo [2] para mejorar performance desde Argentina.

Salutes

[1] https://aws.amazon.com/es/free/
[2]
http://aws.amazon.com/es/about-aws/whats-new/2011/12/14/announcing-the-south-america-sao-paulo-region/#
_______________________________________________
pyar mailing list pyar-+ZN9ApsXKcFd+***@public.gmane.org
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

_______________________________________________
pyar mailing list pyar-+ZN9ApsXKcFd+***@public.gmane.org
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
nachopro
2012-03-06 13:19:21 UTC
Permalink
Post by Miguel Barraza
ando programando servidores de juegos con sockets (para manejo de
audiojuegos) juegos de audio para personas ciegas.
¿cual conocen?
¿que tal su experiencia con ese servidor?
Hola estimado, yo utilizo Linode[0] Realmente lo recomiendo, es un
VPS, con lo que podés elegir la distro a utilizar, automatizar ciertas
cosas y tiene un panel excelente!

[0] http://linode.com
--
ignacio benedetti a.k.a. nachopro
mailto:tranceway-***@public.gmane.org
http://blog.nachopro.com.ar/
_______________________________________________
pyar mailing list pyar-+ZN9ApsXKcFd+***@public.gmane.org
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
Terry Reedy
2012-03-08 00:43:05 UTC
Permalink
Post by Facundo Batista
Post by Diva Satanica
Hola gente preguntonta por no decir (B.....DA), porque no existe la
constante en python?
Hola!
No existen las constantes por una decisión de diseño. Sin embargo, por
*convención*, si nombrás una variable global con mayúscula, *todos*
esperan que esa variable no cambie de valor.
PI = 3.14
Si vos ves eso en el código, esperás que PI siempre valga 3.14, y que
el código lo use, pero que jamás lo cambie. Es una convención.
Post by Diva Satanica
from tkinter import constants
dir(constants)
['ACTIVE', 'ALL', 'ANCHOR', 'ARC', 'BASELINE', 'BEVEL', 'BOTH',
'BOTTOM', 'BROWSE', 'BUTT', 'CASCADE', 'CENTER', 'CHAR', 'CHECKBUTTON',
'CHORD', 'COMMAND', 'CURRENT', 'DISABLED', 'DOTBOX', 'E', 'END', 'EW',
'EXTENDED', 'FALSE', 'FIRST', 'FLAT', 'GROOVE', 'HIDDEN', 'HORIZONTAL',
'INSERT', 'INSIDE', 'LAST', 'LEFT', 'MITER', 'MOVETO', 'MULTIPLE', 'N',
'NE', 'NO', 'NONE', 'NORMAL', 'NS', 'NSEW', 'NUMERIC', 'NW', 'OFF',
'ON', 'OUTSIDE', 'PAGES', 'PIESLICE', 'PROJECTING', 'RADIOBUTTON',
'RAISED', 'RIDGE', 'RIGHT', 'ROUND', 'S', 'SCROLL', 'SE', 'SEL',
'SEL_FIRST', 'SEL_LAST', 'SEPARATOR', 'SINGLE', 'SOLID', 'SUNKEN', 'SW',
'TOP', 'TRUE', 'UNDERLINE', 'UNITS', 'VERTICAL', 'W', 'WORD', 'X', 'Y',
'YES', '__builtins__', '__cached__', '__doc__', '__file__', '__name__',
'__package__']

Deben no cambiarlos!
--
Terry Jan Reedy


_______________________________________________
pyar mailing list pyar-+ZN9ApsXKcFd+***@public.gmane.org
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
Carlos Miguel FARIAS
2012-03-05 11:15:08 UTC
Permalink
Entiendo que la finalidad de las constantes "con nombre" es pura y
exclusivamente util para la documentación, y circunstancialemente, en
algunos lenguajes de programación puede ser que reduzcan los
requerimientos de memoria, ya que el valor está una sola vez
declarado.
En PHP, una constante, además de servir para documentar, el valor
asociado, esta almacenado una sola vez.
Si el nombre es muy largo, como el codigo es interpretado
(principalmente) no creo que mejore el desempeño, si el nombre es
largo, si el valor es largo (algún valor string), puede que mejore el
tema.
En mi caso, que vengo del VFP, una constante, al momento de compilarse
el codigo (es el equivalente en python a pasar de un archivo py a pyc
o pyo), es simplemente un nombre que se le da a un conjunto de codigo
(generalmente valores) que donde se encuentran (las constantes) en el
código, son reemplazados por su valor.
Lo interesante en VFP es que una constante puede reemplazar cualquier
cosa, instrucciones, nombres, strings, números, etc.
Saludos: Miguel, La PaMPA (RA)
_______________________________________________
pyar mailing list pyar-+ZN9ApsXKcFd+***@public.gmane.org
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
Continue reading on narkive:
Loading...