top of page

Soy un párrafo. Haz clic aquí para agregar tu propio texto y edítame. Es muy sencillo.

def Funcion_mulreturn (Algun parametro):

       #instrucciones

       #...

       #...

       Return V1,V2,V3...

 

Vr1,Vr2,Vr3... = Funcion_mulreturn(Algun parametro)

Funciones

5.Funciones con parámetros arbitrarios: Hasta ahora se ha visto que cuando se definen parámetros de entrada en una función y se le pasan menos o más parámetros de lo que espera, el script que contenga la función simplemente no va funcionar.

Veremos que es posible definir funciones de forma que reciba mas parametros de los que espera (esto puede ser muy útil en algunos casos),esto se conoce como funciones con parámetros arbitrarios.

Para definir parámetros arbitrarios se usa un asterisco (*)

 

def Param_arbitrario (Parametro_fijo1,Parametro_fijo 2,*Parametro_arbitrario):

 

Veamos un ejemplo simple:

import math #se usa para obtener el valor de pi

r=2

a=4

def cilindro (radio,alto):

      AreaTapa=math.pi*pow(radio,2)

      AreaCuerpo=alto*math.pi*(2*radio)

      Volumen = alto*AreaTapa

   

      return AreaTapa ,AreaCuerpo,Volumen #se retornan los 3 cálculos al tiempo

   

At,Ac,v=cilindro(r,a)

print ("Area de tapa", "%.2f" %At) # el " %.2f" indica que se imprimen solo 2 decimales

print ("Area del cuerpo", "%.2f" %Ac)  

print ("Volumen", "%.2f" %v)   

4.Funciones con retorno múltiple: Una de las grandes ventajas de python es que las funciones pueden retornar más de una variable a la función que las llama.

Igual que antes si la función tiene retorno, este debe almacenarse en una variable, por lo tanto si una función retorna varias variables, esta debe almacenarse en varias variables. La sintaxis es la siguiente:

Como es de esperarse las asignaciones se dan en orden Vr1= V1, Vr2 = V2 y así sucesivamente. Las variables que se retornan pueden ser de cualquier tipo

 

Ejemplo:

#Función sin retorno ni parámetros

import random

def soy_una_funcion(): #Si no se requieren parámetros se dejan los paréntesis vacíos

             # esto solo lo ve la función

             x=[ ] # esta variable “muere” al terminar la ejecución de la función

            for i in range (0,10):

                        x.append(random.randint(0,10))  # imprime lista con números aleatorios en (0,10)

            print (x)

soy_una_funcion( ) # aquí se llama la función

# Esta función calcula áreas y volumen de un cilindro

import math #se usa para obtener el valor de pi

def cilindro (radio,alto): #las variables que la función crea tiene por nombre "radio" y "alto"

      AreaTapa=math.pi*pow(radio,2)

      AreaCuerpo=alto*math.pi*(2*radio)

      Volumen=alto*AreaTapa

cilindro(alto=4,radio=2) # los argumentos se pasan en desorden

#esta función calcula el promedio de varias muestras de temperatura

import random as rd  #se usa para generar el número aleatorio

import numpy as np  # Se usa para calcular el promedio de una lista

def temperature (escala):

      temp=[]

      for i in range(0,20):

            temp.append(rd.uniform(298.15,308.15)) #se representa la temperatura como un número aleatorio

 

  promedio=np.mean(temp) # se saca un promedio de las 20 muestras que se tomaron

  if escala=="kelvin":

      return promedio #el cálculo inicial se hace en kelvin

  elif escala=="celsius":

      return (promedio-273.15) #se convierte a grados celsius

  else:

      return (1.8*(promedio-273.15)+32) #se cambia a grados fahrenheit

 

while True:

  print ("Ingrese la escala deseada (Kelvin,Fahrenheit o celsius) ")

  print("Escriba 'exit' para salir")

  escala =input( ) #si es python 2.7 se debe usar raw_input

  escala=escala.lower() #convierte la cadena de caracteres a solo minúsculas

 

  if escala =="exit":

      print ("Bye")

      break

 

  elif(escala=="kelvin" or escala=="celcius" or escala=="farenheit"):

      temperatura = temperature(escala)

      print ("La temperatura es ", temperatura)

      break

  else:

      print ("Opción no valida")

En términos simples, en informática, una función es una forma de agrupar sentencias e instrucciones que realizan una tarea específica y que solo se ejecuta al ser llamada, es decir, podemos llamar a un grupo de instrucciones haciendo uso de una sola sentencia que contiene a todas las instrucciones que realizan dicha tarea.

 

Hacer uso de funciones nos facilita realizar programas donde hayan bloques de código que se repitan (como imprimir un menú por ejemplo),hace que sea más fácil detectar errores, vuelve los códigos más compactos y entendibles, aunque no necesariamente más eficientes(hablando en términos de complejidad computacional) y lo más importante; permite hacer uso de códigos que están en archivos diferentes al del código que los ejecuta.

Se podría decir entonces que la idea de las funciones es dividir un problema en problemas más pequeños y fáciles de resolver (La clásica táctica de divide y vencerás).

 

Para definir una función se hace  uso de las palabra def seguida por el nombre que identifica la función y unos parámetros de entrada (si los lleva) entre paréntesis. Así

 

            def Soy_una_funcion(Parametro1, Parametro2...):  

                   #...instrucciones

                   .

                   .

                   .

Todas las variables e instrucciones dentro de una función solo pueden ser vistas por la función que las contiene (son locales a la función) y se liberan de la memoria una vez que  la función terminó de ejecutarse completamente, es decir, una función no puede modificar variables de otra función directamente (por eso pueden haber diferentes funciones  con variables que tiene el mismo nombre)

Las funciones se pueden definir de forma que pueden o no llevar parámetros de entrada y pueden o no retornar valores.

1.Funciones sin parámetros ni retorno: Estos son el tipo más simple de función ya que solo es necesario preocuparse por lo que va dentro de la función, suelen usarse mucho para imprimir mensajes en pantalla.

 

Ejemplo:

Recordemos que definir la función solamente no sirve, esta se debe llamar en algún punto del programa ya que por sí sola, la definición es solo eso, una definición, no se ejecuta sola.

 

2. Función con parámetros de entrada y sin retorno: Lo primero que debemos saber es que los parámetros de entrada son variables(de cualquier tipo) que “se entregan” a una función específica desde una función que la llama. Por ejemplo, desde el main() se llaman a una función que calcula el área de un círculo y se le entrega como parámetro el radio de un círculo cualquiera.

Cuando se le pasa una variable  como parámetro   a una función, en esta se crea una copia de de la variable que pasa como argumento, es decir, no es que se le entregue la variable, se le entrega una copia de la variable y por lo tanto variable original no se modifica.

Una función con parámetros de entrada se define así:

 

            def soy_una_funcion_con_parametros (p1,p2,p3…,pn):

 

cuando se definen los parámetros se están creando variables locales con esos nombres (p1,p2...pn) que tendrán como valor  inicial los valores que le entregue la función que lo llame. Recordemos que no es necesario que las variables que se entregan como parámetro tengan el mismo nombre, pero sí es importante que tengan el mismo orden, al menos en principio(se vera mas adelante que no necesariamente es así)

Ejemplo:

import math # con esta librería puedo calcular potencia y obtener el valor pi

r=3

def area_circulo (radio):

            area=math.pi*pow(radio,2)

            print (area)

area_circulo (r) # acá se llama a la función y se le entrega la variable r como argumento

Aunque dijimos antes que el orden que en se entreguen los argumentos es importante hay algo curioso en python, y es que si entregas una variable con exactamente el nombre que ella espera, no importa el orden el que los entregues. Veamos un ejemplo:

El problema de esto el que las variables deben entregarse tal cual en el ejemplo (es decir,el igual ( = ) debe ir).

3.Funciones con retorno: La mayoría de veces que se usa una función queremos que esta calcule o realice una operación que necesitamos en el main por ejemplo. La pregunta sería ¿cómo puedo obtener un valor que resulta de operaciones en una función, si estas solo pueden ser vistas desde la función que las ejecuta?.

Para obtener un valor que está en una variable que en una función desde otra función (como desde el main por ejemplo) se usan los valores de retorno.

 

Para retornar un valor se hace uso de la instrucción return  seguida de la variable que se desea retornar,así:

            def  funcion_retornon(parametro):

            # Instrucciones

            .

            .

            .

            return algun_valor

 Valor = funcion_retorno ( algun_parametro )

 

Como la función retorna un valor este debe almacenarse en una variable,esta variable puede ser de cualquier tipo (incluso listas o matrices),pero debe tenerse cuidado con 2 cosas, la primera es que lo que retorna una función necesariamente debe almacenarse en una variable (o se dará un error) y lo segundo es que los tipos de variable deben coincidir,es decir, si se retorna un entero la variable “valor” no podría ser una matriz.

 

Ejemplo:

def recorrer(ParametroFijo, *Parametro_arbitrario):

      print ('Este parametro es: ',ParametroFijo) #se imprime el parámetro fijo

      for arb in Parametro_arbitrario: # se obtienen los parámetros arbitrarios

           print ('Este parametro es :',arb )#Se imprimen los parámetros arbitrarios

recorrer('Fijo',''Arbitrario','Arbitrario','Arbitrario') #se llama la función

By:Informatica1-udea

bottom of page