Re: [Python-es] Funciones Decoradores
En/na Manuel A. Estevez Fernandez ha escrit: Alguien me podría ayudar para poder guardar los parámetros que recibe la función que se va a ejecutar, Si no me equivoco kwargs solamente tomará valor si llamas a la función con argumentos con nombre: In [1]: def prueba(*args, **kw) : ...: print args, kw ...: ...: In [2]: prueba(1) (1,) {} In [3]: prueba(foo=1) () {'foo': 1} In [4]: prueba(3,foo=1) (3,) {'foo': 1} y ademas la funcion get_informacion, dentro de su funcionamiento manda a llamar a la funcion get_query_statement y esta no se registra en el log ¿por qué? El problema es que get_informacion no llega a ejecutarse. En el decorador te limitas a registrar la llamada en el log, pero no llamas a la función decorada. Saludos ___ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
[Python-es] Funciones Decoradores
Hola que tal Estoy aprendiendo a utilizar las funciones decoradoras para llevar un log: Donde tengo la funcion decoradora: /def log(f): def inner(*args,**kwargs): if sincro_config.NIVEL_REGISTRO == 1: archivo_log_ = open(config.LOG_PATH,'a') archivo_log_.write('Ejecutando %s %s\n'%(f.__name__,strftime("%Y-%m-%d %H:%M:%S", localtime( archivo_log_.close() #return inner elif sincro_config.NIVEL_REGISTRO==2: archivo_log_ = open(config.LOG_PATH,'a') archivo_log_.write('Ejecutando %s %s\n'%(f.__name__,strftime("%Y-%m-%d %H:%M:%S", localtime( archivo_log_.write('Parametros Recibos: \n') for name,value in kwargs.items(): archivo_log_.write('Nombre: %s\t\tValor: %s\n'%(name,value)) archivo_log_.close() return inner/ ademas tengo la clase de la cual quiero ir guardando los sucesos: class Conexion: configuracion_ = '' cursor_ = '' bandera_ = '' conxn_ = '' def __init__(self,configuracion_): self.configuracion_ = configuracion_ return @log def get_pk(self,_tabla): [..] return lista_ @log def get_query_statement(self,_diccionario,_tabla,_operacion): [..] return cadena @log def connect(self): [..] return @log def get_informacion(self ,_tabla,_diccionario ): query_ = self.get_query_statement(_diccionario,_tabla,'select') resultado_ = self.cursor_.query(query_).dictresult() return resultado_ # Funcion que tiene como finalidad realizar una escritura en la base de datos # rebice un diccionario con los campos, el nombre de la tabla y el tipo de operacion # a realizar ( insert o update) @log def set_informacion(self,_diccionario,_tabla, _operacion): [ .. ] return success_ # Cierra la conexion con la base de datos @log def close(self): [ .. ] return Entonces cual realizo una prueba de mi clase con el siguiente script: from sincro_config import sincro_config import sincro_conexion db_ = sincro_conexion.Conexion(sincro_config) db_.connect() ventas_ = {'id_sucursal':2} query_ = db_.get_informacion('sucursales',ventas_) print query_ db_.close() El log marcado como 2 : me da el siguiente resultado: /Ejecutando connect 2011-06-20 18:30:42 Parametros Recibos: Ejecutando get_informacion 2011-06-20 18:30:42 Parametros Recibos: Ejecutando close 2011-06-20 18:30:42 Parametros Recibos: / Alguien me podría ayudar para poder guardar los parámetros que recibe la función que se va a ejecutar, y ademas la funcion get_informacion, dentro de su funcionamiento manda a llamar a la funcion get_query_statement y esta no se registra en el log ¿por qué? Saludos y gracias y por su atención. ___ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
Re: [Python-es] Detectar una tecla
El 20 de junio de 2011 09:33, Javier Collado escribió: > Hola, > > El día 20 de junio de 2011 15:49, Douglas Jiménez > escribió: > > Quizás si explico lo que quiero hacer .. > > Quizá en lugar de desarrollar la aplicación para consola, sea más > práctico hacerlo para un entorno de ventanas... > Un saludo, >Javier > Siguiendo la recomendación de Javier y por aquello de que "Unas cuantas horas de ensayo y error pueden ayudarte a ahorrar unos minutos de revisión de los manuales", llevo ya unas cuantas horas leyendo el manual de TKinter de Fredrik Lundh, que conseguí en la red. Así que esta parte del hilo creo que va dirigida a quienes manejen TKinter. Al incio del capítulo 7, en la página 19, Lundh da un ejemplo para manejar el evento de capturar pulsaciones del ratón. Lo corrí haciendo las pequeñas modificaciones necesarias para Python 3.1 y todo perfecto. Por supuesto que se me vino la idea de adaptarlo para las pulsaciones de teclado y lo convertí en esto: # Archivo: tecla.py from tkinter import * def main(): root = Tk() def callback(evento): print("La tecla es", evento.keycode) # Línea clave del programa frame = Frame(root, width=100, height=100) frame.bind("", callback) frame.pack() root.mainloop() con lo cual pretendo que al presionar una tecla se imprima algo relacionado con ella en el terminal (es la que llamé Línea clave del programa). En la línea clave ha cambiado .keycode por .keysym, keysym_num y otras cosas, pero nada de nada. Como es natural, necesito una orientación a este respecto. Es claro que no he entendido cómo manejar el evento . Gracias. Douglas. ___ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
Re: [Python-es] Detectar una tecla
El lun, 20-06-2011 a las 16:03 +0200, Javier Collado escribió: > Quizá en lugar de desarrollar la aplicación para consola, sea más > práctico hacerlo para un entorno de ventanas en cualquiera de los > frameworks disponibles: gtk, qt, wxwindows, etc. > > Por ejemplo, en gtk, que es el que conozco mejor, no habría problema > en capturar los eventos de teclado y, además, podrías controlar > fácilmente el tamaño de letra utilizado que sería uno de los > requisitos de acuerdo con la explicación. > Yo leyendo el hilo, estaba pensando que sería más práctico aún hacerlo en un entorno web. Y si te queda chulo incluso puedes sacar unos durillos extra. ___ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/