Mostrando entradas con la etiqueta Capítulo 7. Mostrar todas las entradas
Mostrando entradas con la etiqueta Capítulo 7. Mostrar todas las entradas

sábado, 24 de noviembre de 2018

Receta Python 3 No. 7-12: Acceder Variables Definidas en un Closure

1. Problema

Acceder las variables definidas en la implementación de un closure.

2. Solución

Las variables de definidas en un closure no quedan expuestas a otras secciones del código. Para proveer acceso a estas variables será necesario crear funciones de acceso.

3. Código Python 3

Archivo Python acceso_variables_closure.py [enlace alternativo]:

Prueba de ejecución:

n = 0
n = 10
10

4. Literatura & Enlaces

Beazly D, Jones B. K. (2013). Python Cookbook, Third Edition. United States: O'Reilly Media.

O

domingo, 18 de noviembre de 2018

Receta Python 3 No. 7-11: Funciones Callback En-línea

1. Problema

Se requiere que el código de invocación de funciones tenga apariencia de una secuencia de invocaciones procedurales.

2. Solución

Para solucionar este problema se usan generadores y corutinas.

3. Código Python 3

Archivo Python funciones_callback_en_linea.py [enlace alternativo]:

Prueba de ejecución:

5
Python 3.x
1
3
5
7
9
11
13
15
17
19
Cierre

4. Literatura & Enlaces

Beazly D, Jones B. K. (2013). Python Cookbook, Third Edition. United States: O'Reilly Media.

O

jueves, 8 de noviembre de 2018

Receta Python 3 No. 7-10: Enviar Datos Adicionales en un Callback

1. Problema

Se requiere adicionar datos extras en la invocación de funciones de tipo callback: manejadores de eventos, completitud, entre otros.

2. Solución

Se pueden definir las funciones que actúan de forma directa sobre los argumentos pasados (tupla) a la función que ejecuta los argumentos, y que se encarga de ejecutar el callback con los resultados generados.

3. Código Python 3

Archivo Python datos_sobre_callback.py [enlace alternativo]:

Prueba de ejecución:

[1] generó: 5

4. Literatura & Enlaces

Beazly D, Jones B. K. (2013). Python Cookbook, Third Edition. United States: O'Reilly Media.

O

sábado, 29 de septiembre de 2018

Receta Python 3 No. 7-9: Reemplazar Clases de un Solo Método por Funciones

1. Problema

Se requiere convertir una clase con un único método, a parte del constructor __init__(), en una función; esto con el propósito de simplificar el código.

2. Solución

Por medio de los closures, una clase de este tipo se puede convertir en funciones. Un closure es una función que contiene 

3. Código Python 3

Archivo Python clases_como_funciones.py [enlace alternativo]:


Esta clase puede convertir en función; así:

Archivo Python clase_como_funcion.py [enlace alternativo]:

4. Literatura & Enlaces

Beazly D, Jones B. K. (2013). Python Cookbook, Third Edition. United States: O'Reilly Media.

O

viernes, 24 de agosto de 2018

Receta Python 3 No. 7-8: Usar Diferente Número de Argumentos en una Función

1. Problema

Invocar una función con una cantidad de argumentos diferente a la requerida.

2. Solución

 El módulo functools cuenta con la función partial la cual permite especificar valores fijos a uno o más parámetros de una función (Beazly, Jones, 2013).

3. Código Python 3

Archivo Python fijar_valores_funcion_invocacion.py [enlace alternativo]:

Prueba de ejecución:


10
26

4. Literatura & Enlaces

Beazly D, Jones B. K. (2013). Python Cookbook, Third Edition. United States: O'Reilly Media.

O

Receta Python 3 No. 7-7: Capturar Variables en Funciones Anónimas

1. Problema

En una expresión lambda capturar variables durante el tiempo de su diseño.

2. Solución

Las variables usadas en el cuerpo de definición de una expresión lambda (i.e., modelo para la definición de una función anónima) se conocen como variables libres: los valores actuales de estas variables son los que se recuperan en la expresión usada (Beazly, Jones, 2013).

3. Código Python 3

Archivo Python variables-libres-funciones-anonimas.py [enlace alternativo]:
Prueba de ejecución:

27
27
25
27

4. Literatura & Enlaces

Beazly D, Jones B. K. (2013). Python Cookbook, Third Edition. United States: O'Reilly Media.

O

miércoles, 22 de agosto de 2018

Receta Python 3 No. 7-6: Definir Funciones Anónimas En Línea

1. Problema

Se requiere escribir una función anónima para ordenar los elementos de una lista.

2. Solución

Las funciones anónimas resultan útiles para la definición de un conjunto de operaciones que no requieren estar definidas dentro del cuerpo de una función con nombre (Beazly, Jones, 2013).

Por ejemplo, se podría utilizar una función anónima para ordenar los elementos de una lista sin necesidad de crear un cuerpo de función con un nombre particular.

3. Código Python 3


Prueba de ejecución:


5
7
['Jaela Meneses', 'Oliva Ordoñez', 'Edward Ortiz', 'Juan Urbano']

4. Literatura & Enlaces

Beazly D, Jones B. K. (2013). Python Cookbook, Third Edition. United States: O'Reilly Media.

O

viernes, 17 de agosto de 2018

Receta Python 3 No. 7-5: Definir Funciones con Parámetros Predeterminados

1. Problema

Se requiere definir funciones que acepten parámetros por defecto y opcionales.

2. Solución

Para definir un parámetro opcional y predeterminado sobre una función basta con asignar, a través del operador asignación =, el valor en cuestión. Además, es necesario especificar los argumentos opcionales al final de los requeridos (Beazly, Jones, 2013).

3. Código Python 3

Archivo Python funcion-parametros-predeterminados.py [enlace alternativo]:

Prueba de ejecución:

fernando@outlook.com Mensaje de prueba john@outlook.com 2018-08-17 07:47:13.992053

4. Literatura & Enlaces

Beazly D, Jones B. K. (2013). Python Cookbook, Third Edition. United States: O'Reilly Media.

O

jueves, 16 de agosto de 2018

Receta Python 3 No. 7-4: Retornar Múltiples Valores desde una Función

1. Problema

Se requiere retornar múltiples valores desde una función.

2. Solución

Para retornar múltiples valores desde una función se recurre al uso de tuplas (Beazly, Jones, 2013).

3. Código Python 3

Archivo Python multiples-valores-retorno-funcion.py [enlace alternativo]:

Prueba de ejecución:

2 3 4 5

4. Literatura & Enlaces

Beazly D, Jones B. K. (2013). Python Cookbook, Third Edition. United States: O'Reilly Media.

O

sábado, 11 de agosto de 2018

Receta Python 3 No. 7-3: Especificar Metadatos a los Parámetros de una Función

1. Problema

Se requiere especificar en una función metadatos sobre sus parámetros.

2. Solución

Entre los metadatos que se pueden especificar en los parámetros de una función es el tipo de dato. Además, también es posible asignar el tipo de dato al valor de retorno de la función (Beazly, Jones, 2013).

3. Código Python 3

Archivo Python metadatos-funcion.py [enlace alternativo]:

Prueba de ejecución:


Help on function sumar in module __main__:

sumar(numero1:int, numero2:int) -> int
    Suma dos números enteros.
    :param numero1: Primer sumando (int)
    :param numero2: Segundo sumando (int)
    :return: Suma de dos números (int)

4. Literatura & Enlaces

Beazly D, Jones B. K. (2013). Python Cookbook, Third Edition. United States: O'Reilly Media.

O

viernes, 10 de agosto de 2018

Receta Python 3 No. 7-2: Escribir Funciones que Acepten Solo Argumentos por su Nombre

1. Problema

Se requiere escribir una función que acepte determinados argumentos por palabra clave.

2. Solución

Se debe preceder el argumento por un carácter de asterisco *, antes que nada es necesario separarlo por una coma (como cualquier otro argumento) (Beazly, Jones, 2013).

3. Código Python 3

Archivo Python argumentos-nombrados.py [enlace alternativo]:

Prueba de ejecución:


La línea 6 produce el error TypeError el cual indica sólo se ha pasado un argumento; se debe remover o comentar esta línea para eliminar el error.

4. Literatura & Enlaces

Beazly D, Jones B. K. (2013). Python Cookbook, Third Edition. United States: O'Reilly Media.

O

lunes, 6 de agosto de 2018

Receta Python 3 No. 7-1: Escribir Funciones que Acepten Cualquier Número de Argumentos

1. Problema

Se requiere escribir funciones que acepten cualquier número de argumentos.

2. Solución

El operador * (asterisco) seguido de un nombre de parámetro ayuda a especificar un número variable de argumentos de entrada en una función (Beazly, Jones, 2013).

3. Código Python 3

Archivo Python funciones-argumentos-variable.py  [enlace alternativo]:

Prueba de ejecución:


2.5
4.25

4. Literatura & Enlaces

Beazly D, Jones B. K. (2013). Python Cookbook, Third Edition. United States: O'Reilly Media.

O

miércoles, 7 de marzo de 2018

Receta C# No. 7-22: Visualizar un Control WPF en una Aplicación Windows Forms

1. Problema

Visualizar controles de tipo WPF en un formulario tipo Windows Forms.

2. Solución

Con el control ElementHost (System.Windows.Forms.Integration) se puede integrar y mostrar un control tipo WPF en un formulario WinForms.

3. Código C#

Para esta receta se ha creado un control basado en UserControl (System.Windows.Controls) que contiene una figura que representa una elipse. Este es el código XAML:



La lógica para este control queda representada por este código:

Archivo C# ElipseControl.xaml.cs [enlace alternativo]:

Más adelante, se requiere construir la lógica en el formulario WinForms para agregar un control ElementHost:




Prueba de ejecución:
Control WPF en WinForms.
Animación 1. Control WPF en WinForms.

Repositorio: https://github.com/Fhernd/Recetas.CSharp

4. Literatura & Enlaces

Jones, A., Freeman (2010). Visual C# 2010 Recipes: A Problem-Solution Approach. United States: Apress.

O