Ver Mensaje Individual
  #2 (permalink)  
Antiguo 08/08/2011, 22:07
Avatar de razpeitia
razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Constantes y parametros por referencia en Python

Cita:
Iniciado por Gobi Ver Mensaje
Hola
Hola

Cita:
Iniciado por Gobi Ver Mensaje
alguien podría decirme como se declara una constante en Python,
Claro puedes hacer, de hecho si el objeto es inmutable no cambiara durante la ejecución del programa, sin embargo aquí tienes una receta para hacer constantes en python.

Cita:
Iniciado por Gobi Ver Mensaje
los argumentos por referencia
Python no pasa los argumentos por valor o por referencia, si no que hace es un "paso por objeto" o "paso por compartir"

Vamos a ver un ejemplo:
Código Python:
Ver original
  1. #Los enteros son inmutables
  2. x = 10
  3. print "Antes de llamar a la funcion", x
  4. def funcion_1(x):
  5.     x = 5
  6. funcion_1(x)
  7. print "Despues de llamar a la funcion", x
  8. #Esto no cambia el valor de x
  9.  
  10.  
  11. #En cambio las listas son mutables
  12. y = [1, 3, 5]
  13. def funcion_2(y):
  14.     y.append(7)
  15. print "Antes de llamar a la funcion", y
  16. funcion_2(y)
  17. print "Despues de llamar a la funcion", y

Si no te gusta este modelo puedes pensar de la siguiente manera:
En Python todo es un objetos, esto significa que ocupa un espacio en memoria y que tiene una dirección de memoria, los parámetros son siempre punteros a esos objetos. Pero los objetos solamente los puedes cambiar a través de sus propios métodos (Que muchas veces esos métodos son sobre carga de operadores).

Para ver esto mejor necesitamos un ejemplo:
Código Python:
Ver original
  1. #Las listas son mutables, pero solo bajo sus propios métodos.
  2. l = [3, 5, 7]
  3. def funcion(l):
  4.     l = [2, 4, 6]
  5. print "Antes de la funcion", l
  6. f(l)
  7. print "Despues de la funcion", l


Cita:
Iniciado por Gobi Ver Mensaje
y si el lenguaje soporta la definición de macros.
No, pero creo que lo quieres es meta programación en este caso, incluso en C/C++ los macros son ineficientes.

Cita:
Iniciado por Gobi Ver Mensaje
Gracias de antemano.
De nada