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