FUNCIONES en Python 3.7


Una función en un lenguaje de programación, es un segmento o un bloque de instrucciones o líneas de código que puede ser invocado (llamado) desde otra función o desde un bloque o programa principal. El lenguaje C  fue el primer lenguaje en utilizar exhausivamente la funciones tanto que el programa principal: main() constituye una función.

Una función, además de ser invocado o invocar a otras funciones, puede también recibir datos de su llamador o retornarle resultados o enviar y recibir desde otras funciones.

En Python una función tiene la siguiente estructura:

def nombreFuncion(argumentos):
        sentencia 1
        sentencia 2
        .....
        return [valores]

donde
- nombreFuncion: Es el nombre de la función, usada para cuando es invocada
- argumentos: Lista o secuencia de objetos o variables de cualquier tipo de datos, encerrados entre dos paréntesis. Puede estar vacía, sin parámetros.
- sentencia 1, ...: es el bloque de instrucciones que conforman el cuerpo de la función.
- return: Es la sentencia que permite retornar al llamador para seguir ejecutándose. Puede devolver valores (los que se incluye en el return).

Observen los dos puntos :, como las sentencias for, while, if, permite indentar cada nueva línea que se ejecutará como parte de la función.
Observen también que todo el cuerpo de la función tiene la misma indentación.
De preferencia la función debe terminar con una línea en blanco
La palabra clave para definir una función es def.

En la lista de los argumentos puede haber variables mudas: son aquellas que al retornar llevan un valor al llamador. Las otras variables de la lista, llevan un valor a la función,

Primer ejemplo

>>>def saludo(): >>> print("Hola ...!!!")
Ahora o llamaremos y, como puede ver, no le vamos a enviar ningún dato ni esperamos que nos devuelva algún resultado.
>>>saludo()
Hola ...!!!
 

Segundo ejemplo

>>>def saludo(d):
>>> print("Hola",d,"¿todo bien?")
>>>
>>>d = "Desideratum"
>>>saludo(d)

Tercer ejemplo

Dado dos números, la función deberá determinar quién es el mayor

>>>def esMayor(a,b):
>>> if a > b:
>>> print("a =",a, "es mayor que b =",b)
>>> elif a
>>> print("b =",b, "es mayor que a =",a)
>>> else: >>> print("ambos son iguales")

Ahora vamos a generar los dos números

>>> m = np.random.randint(20,40)
>>> n = np.random.randint(20,40)
>>>esMayor(m,n)
 

Cuarto ejemplo

Trabajemos mejor en un archivo. Abra uno nuevo usando [File] - [New file]. Grabe el archivo con el nombre: mymod15.py.

Nuestro problema consiste en lo siguiente: Dado tres números enteros aleatorios, determinar el menor y el mayor
Empezamos importando numpy
import numpy as np
La función deberá recibir los tres números: a, b, c

La función:

def MenorMayor(m,n,p):
    x = [m,n,p]
    x.sort()
    min = x[0]
    max = x[len(x)-1]
    print("\nLa lista:",x,"\n\nEl menor:",min,"\nEl mayor:",max)


El programa principal genera tres números aleatorios entre 100 y 1000:

a=np.random.randint(100,1000)
b=np.random.randint(100,1000)
c=np.random.randint(100,1000)


Ahora llamamos a la función, pasándle tres números.

MenorMayor(a,b,c)

Grabe el archivo y pase a ejecutarlo.
Recibimos los resultados algo parecido a esto:

La lista: [110, 332, 727]

El menor: 110
El mayor: 727
 

Quinto ejemplo: Invocando a uno de nuestros módulos

El ejemplo anterior nos sugiere algo interesane:

Vamos a crear nuestro módulo mymod16.py que contenga sólo una función: MinMax(...). Esta función debe recibir una lista y determinar el mínimo y máximo valor de la lista y devolvernos los dos valores a la consola.

El contenido del módulo será la siguiente función:

import numpy as np
def MinMax(Lista):
    Lista.sort()
    min = Lista[0]
    max = Lista[len(Lista)-1]
    return("Minimo:",min, "Máximo:",max)


Vamos a grabar el archivo con el nombre mymod16.py
Compruebe que al ejecutarlo, no habrá ningún resultado y quedará en modo de intérprete.

Ahora, en la consola, generamos una lista:
>>> x = np.arange(np.random.randint(100),np.random.randint(500))

Importemos de nuestro módulo mymod16, la función MinMax, que será una función contenida en nuestra librería mymod16.

>>>from mymod16 import MinMax
Ahora lo invocamos pasándole la lista x

>>>MinMax(x)

El resultado será algo siimilar a:

('Minimo:', 73, 'Máximo:', 455)

Una prueba más de nuestro módulo:
Vamos a cargar usando pandas, los datosdel archivo ingreso.csv que se encuentra en la carpeta pypage de la unidad D.

>>>fn = open("d:\\pypage\\ingreso.csv")
>>>datos = fn.read()
>>>fn.close()

Lo convertimos a lista, quitándoles el control de fin de línea
>>>datos = datos.split("\n")
>>>len(datos)
640

Como lo que tenemos es una lista de datos no numéricos, debemos convertirlos a valores numéricos, a cada uno de los 640 de la lista
Para ello vamos a usar la sentencia for:

Primero definimos una lista vacía para Ingreso, luego usamos el for para añadir (append hacia la lista, cada datos[i] en flotante:

>>> Ingreso = []
>>> for i in range(len(datos)):
            Ingreso.append(float(datos[i]))


Ahora, estando en memoria MinMax de mymod16, lo invocamos, enviándole la lista de los datos
>>> MinMax(Ingreso)
('Minimo:', 500.0, 'Máximo:', 3200.0)


Podemos afirmar con satisfacción, que la manipulación de librerías y sus múltiples funciones no es nada del otro mundo.



Continuar en la siguiente sesión