Curso Python. Volumen VII: Funciones

Escrito por Javier Ceballos Fernández

Bienvenidos una semana más a nuestro curso de Python. Hoy vamos hablar de un recurso que se utiliza mucho en programación, ya que permite mantener el código ordenado y evita tener líneas de código repetidas, las funciones. Os enseñaremos cómo se crean y cómo se utilizan, así que pongámonos manos a la obra.

Lo primero que tendremos que hacer es definir la función. Para poder definir una función tendremos que usar la instrucción reservada “def”, después añadiremos el nombre que queramos darle a la función y seguido de los “()” y finalizaremos con “:” como hemos visto en otras ocasiones. Las instrucciones tendrán que ir tabuladas como hemos hecho otras veces. A continuación, os muestro un ejemplo:

def miFuncion():

    #Instrucciones de la funcion

Para poder ejecutar una función tendremos que llamarla en nuestro código principal. Para ello sólo tendremos que poner su nombre con los paréntesis:

def mifuncion():

    print "Hola Mundo"

miFuncion()

Cuando queramos que una función, devuelva datos tendremos que finalizar la función con la instrucción reservada “return” seguida de los datos que queramos devolver. Cuando hagamos esto, podemos igualar una variable a la función, y esta pasará a tener el valor devuelto por la función:

def miFuncion():

    return "Hola Mundo"

linea = miFuncion()

print linea

Parámetros

Un parámetro es un valor que queremos pasar a la función para que la use, para hacer esto pondremos los nombres de estas variables dentro de los paréntesis, lo llamo variables porque realmente la función lo trata como tal. Se pueden poner todas las variables que se quieran siempre y cuando estén separadas por comas, a continuación os pongo un ejemplo:

def miFuncion(marca, modelo):

    #Instrucciones

Como os he comentado los parámetros son utilizados como variables dentro de la función. Y se utilizan como cualquier variable:

def miFuncion(marca, modelo):

    coche = marca, modelo
    print coche

Estas variables sólo pueden acceder dentro de la función.

Al llamar a una función, siempre se le deben pasar sus argumentos en el mismo orden en el que los espera. Pero esto puede evitarse, haciendo uso del paso de argumentos como tuplas, también se le denomina hacer uso de “keyword”.

Keywords como parámetros

Esto es un modo de pasar datos que nos ayuda a que podamos luego ponerlos en el orden que queramos siempre que lo identifiquemos adecuadamente. Se definen del siguiente modo clave=valor:

def coche(modelo, marca):

    print marca, modelo

coche (marca ="Kia",modelo ="Ceed")

Parámetros por omisión

También se puede asignar valores por defecto a los parámetros de las funciones. Esto significa, que la función podrá ser llamada con menos argumentos de los que espera:

def coche(modelo, marca='Skoda'):

    print marca, modelo

coche ('Octavia') # Imprime: Skoda Octavia

Parámetros arbitrarios

Existe la posibilidad de que una función espere recibir un número indefinido de argumentos. Estos argumentos, llegarán a la función en forma de lista.

Para definir argumentos arbitrarios en una función, se antecede al parámetro un asterisco (*):

def funcionParamArbitrarios(parametro_fijo, *arbitrarios):

    print parametro_fijo
    #Los parámetros arbitrarios se recorren como listas
    for dato in arbitrarios:
    print dato
funcionParamArbitrarios('Fijo', 'arbitrario 1', 'arbitrario 2', 'arbitrario 3')

Si una función espera recibir parámetros fijos y arbitrarios, los arbitrarios siempre deben definirse después de los fijos.

Es posible también, obtener parámetros arbitrarios como pares de clave=valor. En estos casos, al nombre del parámetro deben precederlo dos asteriscos (**):

def funcionParamArbitrarios(parametro_fijo, *arbitrarios, **kwords):

    print parametro_fijo
    for dato in arbitrarios:
        print dato
    #Los argumentos arbitrarios tipo clave, se recorren como los diccionarios
    for clave in kwords:
        print "El valor de", clave, "es", kwords[clave]

funcionParamArbitrarios("Fixed", "arbitrario 1", "arbitrario 2", "arbitrario 3", clave1="valor uno", clave2="valor dos")

Desempaquetado de parámetros

Se puede dar una situación inversa a la anterior. Esto quiere decir, que la función espere una lista fija de parámetros, pero que éstos, en vez de estar disponibles de forma separada, se encuentren contenidos en una lista. En este caso, el signo asterisco (*) deberá preceder al nombre de la lista que es pasada como parámetro durante la llamada a la función:

def calcular(importe, descuento):

    return importe - (importe * descuento / 100)

datos = [1000, 10]
print calcular(*datos)

El mismo caso puede darse cuando los valores a ser pasados como parámetros a una función, se encuentren disponibles en un diccionario. Aquí, deberán pasarse a la función, precedidos de dos asteriscos (**):

def calcular(importe, descuento): 
    return importe - (importe * descuento / 100) 

datos = {"descuento": 10, "importe": 1000} #así se definen los diccionarios. 
print calcular(**datos)

Esto es todo lo que os puedo enseñar sobre las funciones de Python, espero que os sirva de ayuda, fijaos en los capítulos anteriores, para ver cómo he utilizado las funciones. En la próxima entrega del curso os propondré unos ejercicios para practicar todo lo aprendido durante estas entregas.

Últimos análisis

Valoración RZ
9
Valoración RZ
8
Valoración RZ
8
Valoración RZ
8
Valoración RZ
8
Valoración RZ
10
Valoración RZ
8