Foros del Web » Programando para Internet » Python »

Función con parámetros como argumento

Estas en el tema de Función con parámetros como argumento en el foro de Python en Foros del Web. Hola, Quería saber si hay una forma de pasar una función con parámetros como argumento, por ejemplo supongamos que tengo una clase: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código ...
  #1 (permalink)  
Antiguo 15/02/2012, 14:31
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 16 años, 1 mes
Puntos: 1329
Función con parámetros como argumento

Hola,

Quería saber si hay una forma de pasar una función con parámetros como argumento, por ejemplo supongamos que tengo una clase:

Código Python:
Ver original
  1. class Foo:
  2.     def bar(self, param):
  3.         OtraClase.candy(self.func)
  4.     def func(self, oparam):
  5.         print oparam

Y se ejecuta, de esta manera en otro módulo:
Código Python:
Ver original
  1. test = Foo()
  2. test.bar(param)

Como ven, lo que falta en es que en la linea 3, cuando le paso la función, debo pasarle los parámetros, pero no se como. Se trata de una interfaz con PyQt.

Edito:

El código pyqt de mi clase original:

Código Python:
Ver original
  1. class Ui_MainWindow(object):
  2.    
  3.     def setupUi(self, MainWindow):
  4.         #Varios Elementos Más
  5.         QtCore.QObject.connect(self.pushButton, QtCore.SIGNAL('clicked()'), self.getExcel)
  6.    
  7.     def getExcel(self, MainWindow):
  8.         ''' Obtener Archivo Excel '''
  9.         from excel import Excel
  10.         self.rutaExcel = QtGui.QFileDialog.getOpenFileName()
  11.         if(self.rutaExcel.length() > 0):
  12.             #Aquí necesito pasar el parametro
  13.             dialog = QtGui.QDialog(MainWindow)
  14.             self.prueba = Ui_Dialog()
  15.             self.prueba.setupUi(dialog)
  16.             dialog.show()
  17.             self.data = Excel.leerExcel(self.rutaExcel, 1);
  18.         else:
  19.             print "Cancelado"
Archivo Completo.

Y lo llamo desde mi main:

Código Python:
Ver original
  1. # -*- coding: utf-8 -*-
  2.  
  3. ''' Registro de Fonaes v0.0.1b
  4. '''
  5. from main_window import Ui_MainWindow
  6. from PyQt4 import QtGui
  7.  
  8. if __name__ == "__main__":
  9.     import sys
  10.     app = QtGui.QApplication(sys.argv)
  11.     MainWindow = QtGui.QMainWindow()
  12.     ui = Ui_MainWindow()
  13.     ui.setupUi(MainWindow)
  14.     MainWindow.show()
  15.     sys.exit(app.exec_())


¿Alguna idea?

Saludos
__________________
Grupo Telegram Docker en Español

Última edición por Carlangueitor; 15/02/2012 a las 17:25
  #2 (permalink)  
Antiguo 15/02/2012, 15:19
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: Función con parámetros como argumento

¿Te refieres a esto?
Código Python:
Ver original
  1. from functools import partial
  2.  
  3. def func(a,b,c):
  4.     return a+b+c
  5.  
  6. binded = partial(func, 1,2,3)
  7. binded() # 6
Sea o no sea esto, gracias a tu pregunta descubrí esto. Nunca me había preguntado si se podía hacer en Python, y de primeras pensé que no +1
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #3 (permalink)  
Antiguo 15/02/2012, 17:59
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 16 años, 1 mes
Puntos: 1329
Respuesta: Función con parámetros como argumento

Wow! Me faltó más investigación, eso me sirve, ya lo implementé.

Algo un poco offtopic, pero hablando de buenas prácticas, ¿Es más recomendable poner los import al inicio del módulo o en el bloque de código?

Saludos
__________________
Grupo Telegram Docker en Español
  #4 (permalink)  
Antiguo 15/02/2012, 19:32
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Función con parámetros como argumento

Siempre es al inicio del modulo, es una mala practica ponerlo en el código.

Si no mal recuerdo eso viene en el PEP-8
  #5 (permalink)  
Antiguo 16/02/2012, 08:57
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: Función con parámetros como argumento

No conozco a fondo el PEP-8, pero me gusta más poner todos los import al principio, así puedes saber en un vistazo qué es lo que vas a usar. Si lo haces dentro del código está todo mezclado.
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #6 (permalink)  
Antiguo 16/02/2012, 10:17
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 16 años, 1 mes
Puntos: 1329
Respuesta: Función con parámetros como argumento

Cierto en el PEP-8 viene:

Cita:
Imports are always put at the top of the file, just after any module comments and docstrings, and before module globals and constants.
Lo pregunto por que encontré varios modulos que lo metían al inicio del bloque de código, como un método.

Saludos
__________________
Grupo Telegram Docker en Español

Etiquetas: ide, formulario
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:36.