Saludos controleros y controleras, en esta entrada entenderemos para que sirven las funciones, como crear funciones en Python y resolveremos algunos ejercicios para que te quede más claro.
Si te gusta Python y deseas seguir aprendiendo este lenguaje de programación, te invito a ver el Curso Gratuito de Python desde Cero.
Y que te suscríbas al canal para que no te pierdas ningún video:
Funciones en Python
En todo lenguaje de programación es muy importante aprender a utilizar y crear nuestras propias funciones, pues esto nos permite ahorrar tiempo, espacio y hará que nuestro código sea mucho más limpio. Pero…
¿Qué es una función?
Una función, no es más que un bloque de código el cual posee un nombre y recibe algunos argumentos de entrada o ninguno, para poder realizar una determinada operación y al final nos retorna un resultado.
Lo mejor de todo, es que este bloque lo podemos llamar todas las veces que queramos.
Cuando usamos funciones dentro de un lenguaje de programación entramos en el conocido paradigma de la programación estructurada cuyas ventajas son:
- modularización: divide el programa en diferentes módulos para permitir su lectura y simplificar la complejidad del problema
- reutilización: evita que estemos repitiendo constantemente un mismo código, ya que podemos llamar la función tantas veces como lo deseemos.
Como crear funciones en python
Las funciones dentro de python se logran a través de la sentencia def.
La sentencia def en python es una definición la cual es empleada para poder crear funciones propias programadas por el usuario para la modularización y reutilización de códigos. Su sintaxis se muestra a continuación:
def nombre_funcion(parametros_de_entrada): """Docstrings de la función""" #Sentencia 1 #Sentencia 2 #Sentencia 3 #.... return expresion
La sintaxis anterior evidencia diferentes etapas que se pueden destacar al momento de crear una función en python las cuales describimos a continuación:
nombre de la función
El nombre de la función hará referencia del objetivo para la cual fue creado dicho bloque de código. Es una buena práctica escribir este nombre en letras minusculas.
Parámetros de Entrada
Los parámetros de entrada son las variables externas de la función necesarias para la ejecución del programa interno dentro de la función, las cuales el usuario debe proveer al momento del llamado de la función.
¿Qué es el docstring en python?
El docstrings es una documentación conformada por una cadena de caracteres la cual está integrada a todos los objetos dentro de Python y su finalidad es describir en detalle para que sirve y como se usa dicho objeto.
Por lo tanto, como puedes ver en la función, inmediatamente después del definir el nombre, viene el docstring que va a describirle al usuario la finalidad de la función y le mostrará como usar la misma. Es decir como hacer el llamado.
para poder leer el docstring de la función digitamos: help(nombre_funcion)
Sentencias
En esta etapa se elabora el bloque de código de python que contiene la lógica de programación de la función, utilizando los parámetros de entrada que fueron referenciados por el usuario con la finalidad de llegar al resultado esperado.
Qué hace la función return en python
La instrucción return en python termina la ejecución de la función como tal y le devuelve el control a la función de llamada o etapa donde fue llamada la función para que continue con el fluno normal de código.
Con return también podemos retornar el valor esperado de la función para que pueda ser usado posteriormente por el programa que realizó la llamada de la función.
Argumentos y Parámetros
Los argumentos de entrada de una función, pueden ser pasados a través de dos formas: por posición o por nombre.
Por posición es la forma típica con la que se asignan valores a una función y consiste en colocar los parámetros de entrada en el mismo orden en el que fueron definidos dentro de la función:
def suma(a, b): """Esta función realiza la suma: c = a + b sus llamado se hace suma(a,b)""" return a + b c= suma(-3,8) print("la suma es",c)
la suma es 5
en el ejemplo anterior a=-3 y b=8.
El llamado por nombre consiste en llamar la función especificando el nombre del parámetro de entrada al cual estamos asignando dentro de la función:
def resta(a, b): """Esta función realiza la resta: c = a + b sus llamado se hace resta(a,b)""" return a - b c= resta(b=-3, a=8) print("la resta es",c)
la resta es 11
Parámetros por defecto
Python permite definir nuestras funciones con parámetros por defecto. En ese caso las funciones vienen precargadas con los parámetros y en caso de que el usuario no especifique ningún parámetro, se usarán estos por defecto.
def resta(a = None, b = None): """Esta función realiza la resta: c = a + b sus llamado se hace resta(a,b)""" if a == None or b == None: print("Error, debes enviar dos números a la función") return return a - b
Como se aprecia en el ejemplo anterior el parámetro a y b están precargados con None ( o vacío) y en el caso de que el usuario no coloque alguno de estos dos parámetros, la función entrará en el condicional y desplegará un mensaje de error para el usuario.
Funciones python ejercicios resueltos
Vamos a crear una función que realice un saludo al controlero o controlera que está realizando este curso de python desde cero:
def saludo(nombre): print('Hola {}'.format(nombre)) print('Bienvenidos a nuestro curso de Python') print('Del canal de Control Automático Educación') saludo('Fernando')
Hola Fernando Bienvenidos a nuestro curso de Python Del canal de Control Automático Educación
Python Scope
Retomando lo aprendido en la creación de funciones dentro de Python, es hora de entender que son los Scope para poder saber cuales variables son modificadas dentro de nuestro script.
Cuando es creada una variable (objeto) en Python, dicha variable SOLO está disponible dentro de la región donde fue creada. Esto se conoce como SCOPE (alcance)
Local Scope en Python
Una variable creada dentro de una función pertenece al ámbito local de esa función y solo se puede usar dentro de esa función.
Note que en las siguientes dos funciones se declara una variable con el mismo nombre x, sin embargo esa varaible solo puede ser empleada dentro de cada función y no es conocida por la otra función a pesar de tener el mismo nombre.
def gravity(): x = 9.81 print(x, id(x), sep=' ---> ') def pi(): x = 3.1416 print(x, id(x), sep=' ---> ‘) pi() gravity() print(x)
Global Scope Python
Una variable creada en el cuerpo principal del código Python es una variable global y pertenece al SCOPE global.
Las variables globales están disponibles desde cualquier SCOPE, global y local.
N = 6.02e23 #moleculas / mol (Avogrado) def gravity(): x = 9.81 print('Local') print(x, id(x), sep=' ---> ') print('Global') print(N, id(N), sep=' ---> ') def pi(): x = 3.1416 print('Local') print(x, id(x), sep=' ---> ') print('Global') print(N, id(N), sep=' ---> ') pi() gravity() print('Main - Global') print(N, id(N), sep=' ---> ')
Note que en este ejemplo la variable global N es conocida por las funciones gravity y pi.
Si opera con el mismo nombre de variable dentro y fuera de una función, Python las tratará como dos variables separadas, una disponible en el scope global (fuera de la función) y otra disponible en el scope local (dentro de la función):
x = 6.02e23 #moleculas / mol (Avogrado) def gravity(): x = 9.81 print('Local') print(x, id(x), sep=' ---> ') def pi(): x = 3.1416 print('Local') print(x, id(x), sep=' ---> ') print('PI') pi() print('GRAVITY') gravity() print('Main - Global') print(x, id(x), sep=' ---> ')
Si necesita crear una variable global, dentro de un SCOPE local, se puede usar la palabra clave global. Con esto es posible convertir la variable al scope global.
También puede ser usado cuando se desee modificar una variable global dentro de una función.
def pi(): global x x = 3.1416 print('Local') print(x, id(x), sep=' ---> ') pi() print(x, id(x), sep=' ---> ')
Recursión en Python
Cuando trabajamos con funciones es bastante común que una función llame a otra.
En Python, ¡también es posible que una función se llame a sí misma! Se dice que una función que se llama a sí misma es recursiva , y la técnica de emplear una función recursiva se llama recursividad.
Puede parecer extraño que una función se llame a sí misma, pero muchos tipos de problemas de programación se expresan mejor recursivamente por eso es importante aprender sobre la recursividad.
¿Por qué utilizar la recursividad?
La mayoría de los problemas de programación se pueden resolver sin recursividad. Entonces, estrictamente hablando, la recursividad generalmente no es necesaria.
Sin embargo, algunas situaciones se prestan particularmente a una definición autorreferencial. Si estuviera diseñando un algoritmo para manejar un caso de este tipo mediante programación, una solución recursiva probablemente sería más limpia y concisa.
El recorrido de estructuras de datos en forma de árbol es un buen ejemplo. Debido a que se trata de estructuras anidadas, se ajustan fácilmente a una definición recursiva. Es probable que un algoritmo no recursivo para caminar a través de una estructura anidada sea algo torpe, mientras que una solución recursiva será relativamente elegante.
Por otro lado, la recursividad no es para todas las situaciones. Aquí hay algunos otros factores a considerar:
- Para algunos problemas, una solución recursiva, aunque posible, será más incómoda que elegante.
- Las implementaciones recursivas a menudo consumen más memoria que las no recursivas.
- En algunos casos, el uso de recursividad puede resultar en un tiempo de ejecución más lento.
Ejemplo 1 de Recursión en Python
Crear una función recursiva que teme un número positivo como argumento e imprima los números desde dicho argumento hasta cero.
def countdown(n): print(n) if n > 0: countdown(n - 1) countdown(6)
- Cuando countdown() se ejecuta por primera vez, Python crea un espacio de nombres y asigna n el valor 6 en ese espacio de nombres (namespace).
- Luego countdown() se llama a sí mismo recursivamente.
- La segunda vez que countdown() se ejecuta, el intérprete crea un segundo espacio de nombres a n y lo asigna a 5.
- Estas dos instancias del nombre n son distintas entre sí y pueden coexistir sin entrar en conflicto porque están en espacios de nombres separados.
- El caso base ocurre cuando n es cero, en cuyo punto se detiene la recursividad.
- En la llamada recursiva, el argumento es uno menos que el valor actual de n, por lo que cada recursión se acerca al caso base.
Ejemplo 2 – Factorial Recursivo
Crear una función recursiva que calcule el factorial de un número.
def factorial(n): if n == 0 or n == 1: return 1 return n * factorial(n-1) factorial(4)
Eso es todo por la entrada del dia de hoy, espero les haya gustado y hayan aprendido algo nuevo. Si te ha servido el contenido de esta entrada, de los videos y los códigos de implementación y deseas apoyar mi trabajo invitandome a un café super barato, puedes hacerlo en el siguiente link:
👉 Invitar a Sergio a un Café ☕️
Que esten muy bien, nos vemos en la siguiente entrada.
Mi nombre es Sergio Andres Castaño Giraldo, y en este sitio web voy a compartir una de las cosas que mas me gusta en la vida y es sobre la Ingeniería de Control y Automatización. El sitio web estará en constante crecimiento, voy a ir publicando material sobre el asunto desde temas básicos hasta temas un poco más complejos. Suscríbete al sitio web, dale me gusta a la página en Facebook y únete al canal de youtube. Espero de corazón que la información que comparto en este sitio, te pueda ser de utilidad. Y nuevamente te doy las gracias y la bienvenida a control automático educación.