11. Funciones - weincoder/IntroductionProgramCourse GitHub Wiki

En esta sección valoraremos la creación de funciones. Estas solucionan el problema de escribir muchas veces, la misma porción de código, por ejemplo supongamos que se nos pide crear un archivo de utilidades de python que sea capaz de leer archivos, crear archivos a partir de una lista, retorna la palabra más larga de una lista y determinar el número más grande entre dos números. Una función inicia con la palabra def cuenta con un nombre el cual definimos nosotros, también cuenta con entradas las cuales podemos emplear dentro de ellas.

def read_a_file(file_name):
    lineas = []
    with open(file_name,'r') as reader:
        for line in reader: lineas.append(line)
    #al igual que una función podemos retornar  una salida en este caso
    #la lista compuesta por las lineas del archivo
    return lineas

def create_a_file(entry_list,file_name):
    with open(file_name, 'w') as writer:
        for elemento in entry_list : writer.write(elemento + "\n")

def find_the_longest(list_of_swords) :
    mayor_ = ""
    for elemento in list_of_swords :
        if len (elemento) > len(mayor_) : mayor_ = elemento
    return mayor_

def find_the_biggest (numero_a, numero_b) :
    answer = "son iguales"
    preview_message = "el numero mas grande es el {} con un valor de {}"
    if numero_a > numero_b : answer = preview_message.format ('a',numero_a)
    elif numero_b > numero_a : answer = preview_message.format ('b',numero_b)
    return answer

En este archivo hacemos uso del anterior importandolo, cuando ponemos el término as es como ponerle un apodo de forma que no debemos copiar el nombre del archivo únicamente llamando a su alias. Para tener en claro este ejemplo es aconsejable mirar los archivos de la sesión 6.

import functions_def as helper

#Constantes
list_of_estudents = ['mafer', 'nano', 'dan' , 'gi']
name_of_file_to_write = 'estudents_file.txt'
file_to_read_name = 'archivo.txt'
message_longest = "el estudiante con nombre mas largo es {}"
a = 2
b = 3
#para acceder a una función dentro del archivo únicamente debemos
#llamar al alias . el nombre de la función
#debemos ingresar las entradas que configuramos para cada una de ellas
print (helper.read_a_file(file_to_read_name))
helper.create_a_file (list_of_estudents,name_of_file_to_write)
print (message_longest.format (helper.find_the_longest(list_of_estudents)))
print (helper.find_the_biggest(a,b))

la ventaja de emplear funciones es que si las requerimos en algún otro código únicamente necesitamos importarlas, esto ahorra líneas de código de forma evidente y esto hace más sostenible en el tiempo nuestros desarrollos