Thread View: chile.comp.programacion
3 messages
3 total messages
Started by David Az�car
Fri, 15 Dec 2006 20:35
funciones en python
Author: David Az�car
Date: Fri, 15 Dec 2006 20:35
Date: Fri, 15 Dec 2006 20:35
21 lines
1533 bytes
1533 bytes
Hola, quisiera hacer una pregunta se puede hacer un arreglo de funciones en python? al estilo de c double (*BX[A])(double, double, double*, double*); donde BX[0] ser�a una funcion, BX[2] ser�a otra, etc. Es que debo definir muchas funciones que son todas muy parecidas pero con ciertos par�metros distintos, y no quiero hacerlas una por una, adem�s las debo meter en un for, del tipo: for i in range(x): BX[i]*5 etc. ojal� puedan ayudarme. saludos cordiales -- David Az�car P.
Re: funciones en python
Author: Patricio Olivares
Date: Sat, 16 Dec 2006 00:35
Date: Sat, 16 Dec 2006 00:35
41 lines
2218 bytes
2218 bytes
David Azócar wrote:
> Hola, quisiera hacer una pregunta
> se puede hacer un arreglo de funciones en python? al estilo de c
si, mas o menos...
>
> for i in range(x):
> BX[i]*5
Esto no lo entiendo muy bien: parece que estas multiplicando un
'puntero a funcion' con un escalar.
En todo caso, en python las funciones son objetos, eso significa que se
pueden asignar o pasar como parametro directamente (nada de punteros
explicitos, todo son "referencias"). Por ejemplo, aqui la funcion
'ejecuta_todas', recibe una lista de funciones, itera sobre ellas y las
va ejecutando.
def ejecuta_todas(funciones, n, m):
for fun in funciones:
print "%s, %s -> %s" % (n, m, fun(n, m))
# defino una serie de funciones
def suma(a, b):
return a + b
def resta(a, b):
return a - b
# guardo las funciones en una lista
funciones = [suma, resta]
# paso la lista de funciones como parametro y las ejecuto
ejecuta_todas(funciones, 10, 5)
y el resultado es:
10, 5 -> 15
10, 5 -> 5
Re: funciones en python
Author: Cristian Gutierrez
Date: Sat, 16 Dec 2006 04:17
Date: Sat, 16 Dec 2006 04:17
55 lines
2118 bytes
2118 bytes
Ayer en la tarde, David Az�car dijo: > Hola, quisiera hacer una pregunta > se puede hacer un arreglo de funciones en python? al estilo de c > > double (*BX[A])(double, double, double*, double*); > > donde BX[0] ser�a una funcion, BX[2] ser�a otra, etc. Es que debo definir > muchas funciones que son todas muy parecidas pero con ciertos par�metros > distintos, y no quiero hacerlas una por una, adem�s las debo meter en un > for, del tipo: > > for i in range(x): > BX[i]*5 > > etc. En Python (al igual que en Perl, y al contrario que en PHP o Java) las funciones son ciudadanos de primera clase: ,----[ funlist.py ] | def squared(x): | return x*x | | def cubic(x): | return x*x*x | | flist = [] | flist.append(squared) | flist.append(cubic) | | for x in [1, 2, 3, 4, 5]: | for f in flist: | print f(x), | print | `---- Esto imprime: ,---- | $ python funlist.py | 1 1 | 4 8 | 9 27 | 16 64 | 25 125 `---- Ojal� te sirva. Salu2, -- Guti "I object to all this sex on the television. I mean, I keep falling off!" -Monty Python
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads