Las funciones son increíblemente poderosas. Los usamos todos los días de nuestras vidas. Cuando nuestros padres dijeron «¡limpia tu habitación!» Sabíamos lo que había que hacer. Las funciones son bloques de código que se ejecutan cuando decimos su nombre. Pero pueden hacer mucho más que eso. A las funciones se les pueden pasar argumentos (parámetros), por lo que podríamos pasar a una función la última temperatura de un sensor y usar la función para activar un ventilador para que se encienda. Podríamos usar una función para leer el contenido de un diccionario y trabajar con los datos almacenados en él.
En este cómo. Introduciremos el concepto de funciones y algunas de sus características más poderosas. También crearemos un proyecto para leer el estado actual de nuestra PC y proporcionar los datos al Python Shell.
Para demostrar cómo usar funciones en Python, usaremos Thonny, un editor de Python gratuito, fácil de usar y multiplataforma.
Antes de que empieces, Instalar Thonny si aún no lo tienes. Puede descargar el lanzamiento para su sistema en el sitio oficial de la aplicación.
Alternativamente, puedes instalar la versión oficial de Python usando esta guía. Tenga en cuenta que esta guía cubre la instalación en Windows 10 y 11.
Cómo crear una función en Python
Las funciones se «definen» utilizando la palabra clave «def». Cuando se llama al nombre de la función, el contenido de la función se ejecuta y la salida se envía al Shell de Python.
1. Crea una función llamada hola. Como es tradición en programación, usaremos “Hello World” como una demostración rápida y sencilla del uso de una función.
def hello():
2. Agregue un bucle for que se iterará (bucle) diez veces. Para bucles son una manera fácil de repetir acciones en cualquier lenguaje de programación. Aquí estamos usando un rango para establecer el número de bucles, pero los bucles for también pueden iterar a través de objetos en listas, diccionarios o tuplas.
for i in range(10):
3. Utilice imprimir para generar «¡Hola mundo!» al shell de Python. La impresión es una función incorporada para pitón. Su función es imprimir objetos. El mensaje que queremos imprimir se llama «argumento» o «parámetro» y lo cubriremos más adelante en el procedimiento.
print("Hello World!")
4. Guarde el código como hello_world.py y haga clic en Ejecutar >> Ejecutar script actual, o presione el botón verde de ejecutar. ¿Lo que sucede? Aquí es donde cometemos un error al reforzar cómo funcionan las funciones. Nuestra función ha sido creada, pero no la hemos llamado, por lo que Python está esperando un comando.
5. En una nueva línea, no dentro del bucle o función for, llame a la función por su nombre. Recuerde incluir el paréntesis al final del nombre de la función.
hello()
6. Haga clic en Ejecutar >> Ejecutar script actual, o presione el botón verde de ejecutar. El Python Shell verá «¡Hola mundo!» impreso diez veces.
Listado de códigos completo: una función simple
def hello():
for i in range(10):
print("Hello World!")
hello()
Cómo crear una función con argumentos
Los argumentos, a veces llamados parámetros, son instrucciones adicionales para un objeto. Las funciones de Python pueden usar argumentos, solo necesitamos agregarlos entre paréntesis. De forma predeterminada, Python no buscará un argumento en una función, debemos establecer una plantilla/expectativa para la función.
En esta sección modificaremos nuestro «¡Hola mundo!» función para aceptar dos argumentos. El primero es para el número de iteraciones en un bucle for, el segundo será para la frase que deseamos repetir. Al especificar argumentos, debemos asegurarnos de pasar el número correcto. Si la función especifica dos argumentos, entonces debemos pasarle dos. De no hacerlo, se producirá un error en la llamada a la función.
1. Crea una función llamada hola y pásale dos argumentos, x y frase. Usamos x como marcador de posición para el número de bucles, «frase» se usa para representar el mensaje que queremos imprimir.
def hello(x, phrase):
2. Agregue un bucle for que se repetirá x veces. El número de veces que se repetirá el bucle se controla mediante el argumento x.
for i in range(x):
3. Utilice print para enviar el argumento «frase» al Python Shell. Recuerde, la frase se establece cuando llamamos a la función.
print(phrase)
4. En una nueva línea, no dentro del bucle o función for, llame a la función por su nombre y pase los dos argumentos. El número de veces que se repetirá (x) y el mensaje que se imprimirá. Hemos elegido hacer cinco bucles e imprimir Tom’s Hardware. No es original, pero ilustra el objetivo del proyecto.
hello(5, "Tom's Hardware")
5. Guarde el código como hello_world.py y haga clic en Ejecutar >> Ejecutar script actual, o presione el botón verde de ejecutar. La frase se imprimirá en Python Shell el número X de veces que haya especificado como argumento.
Listado de códigos completo: funciones con argumentos
def hello(x, phrase):
for i in range(x):
print(phrase)
hello(5, "Tom's Hardware")
Cómo crear una función con argumentos predeterminados y de palabras clave
Hemos pasado argumentos a nuestras funciones, pero también podemos establecer un argumento predeterminado. El valor predeterminado será aceptado y utilizado si la función se pasa sin un argumento establecido por el usuario. A continuación se muestra un ejemplo rápido que tiene un argumento predeterminado de nombre. El nombre predeterminado es el mío y se usa en la función para saludar al usuario. Todo lo que necesitamos hacer es pasar el argumento del nombre para crear un nuevo saludo con nombre.
1. Cree una función con un argumento predeterminado de nombre. Obviamente cambia el nombre a tu elección.
def whoareyou(name = "Les"):
2. Usando el argumento del nombre, imprima un saludo para el usuario. Aquí usamos el método de formato de cadena de Python para insertar el argumento del nombre como una cadena.
print("Hello :s!".format(name))
3. Llame a la función sin argumentos. Esto debería mostrar que se utiliza el nombre predeterminado.
whoareyou()
4. Llame a la función y pase un nuevo nombre como argumento. La llamada a la función ocurre fuera de la función misma.
whoareyou("Dave")
5. Guarde el código como name.py y haga clic en Ejecutar >> Ejecutar script actual, o presione el botón verde de ejecutar. Podemos ver que el código genera dos saludos. Uno para el valor predeterminado y el otro para «Dave».
Listado de códigos completo: funciones con argumento predeterminado
def whoareyou(name = "Les"):
print("Hello :s!".format(name))
whoareyou()
whoareyou("Dave")
Los argumentos de palabras clave son útiles cuando tenemos que pasar varios argumentos. En este ejemplo utilizamos la estructura clásica de Mad Libs para crear una oración con un sustantivo, un verbo y una cosa. El orden de los argumentos no importa ya que proporcionamos la estructura clave = valor.
1. Cree una función y configúrela para aceptar tres argumentos.
def madlibs(noun, verb, thing):
2. Crea una oración que imprima el sustantivo, el verbo y la cosa en el shell de Python. Nuevamente usamos el excelente método de formato de cadena de Python para colocar los argumentos en la oración.
print("The :s :s over the :s.".format(noun, verb, thing))
3. Guarde el código como madlibs.py y haga clic en Ejecutar. >> Ejecute el script actual o presione el botón verde de ejecutar.
4. En Python Shell, llame a la función y pase los tres argumentos. Recuerde utilizar la clave, de lo contrario el pedido será incorrecto. Presione Enter para ejecutar el código. Verá que la oración aparece usando sus palabras clave personalizadas.
madlibs(noun = "rabbit",verb = "jumped",thing ="gate")
Listado de códigos completo: funciones con múltiples argumentos
def madlibs(noun, verb, thing):
print("The :s :s over the :s.".format(noun, verb, thing))
Uso de funciones para obtener datos de rendimiento de la PC
Para ilustrar cómo usar funciones, vamos a crear un proyecto rápido de Python que obtendrá datos de CPU y RAM en vivo utilizando el módulo Python psutil (utilidades de proceso y sistema). Este módulo puede obtener datos sobre CPU, RAM, discos, redes y otros. sensores, todos usando Python.
Antes de que podamos escribir cualquier código, necesitamos instalar el módulo psutil.
1. En Thonny, haga clic en Herramientas >> Administrar paquetes.
2. Busque psutil y haga clic en Buscar en PyPi.
3. Seleccione psutil de los resultados devueltos.
4. Instale psutil y luego cierre el cuadro de diálogo cuando esté completo. Ya hemos instalado psutil por lo que nuestro cuadro de diálogo se ve un poco diferente.
5. Cree un nuevo archivo en Thonny e importe el módulo psutil.
import psutil
6. Crea una función, cpu(). Esta función obtendrá la utilización actual de la CPU y la almacenará en una variable. Luego imprimimos el valor en Python Shell usando un formato de cadena.
def cpu():
cpu = str(psutil.cpu_percent())
print("Current CPU usage is :s%".format(cpu))
7. Crea una nueva función, ram(). Utilice una declaración impresa, junto con algunos cálculos, para imprimir un título con diez * en cada lado.Esta función se encargará de todos los pasos necesarios para obtener la cantidad actual de memoria disponible.
def ram():
print("*"*10,"RAM Stats","*"*10)
8. Obtenga las estadísticas de memoria actuales y guárdelas en una variable llamada «memoria».
memory = psutil.virtual_memory()
9. Extraiga la cantidad actual de RAM disponible y guárdela en la variable. El objeto de memoria inicialmente devuelve la memoria total, disponible, porcentual, utilizada y libre. El objeto devuelto es una lista y necesitamos el segundo valor de la lista, que es [1].
memory = memory[1]
10. Convertir la cantidad de memoria a Megabytes y redondear el valor para facilitar la lectura.
memory = round(memory / 1024 / 1024)
11. Imprime la cantidad de memoria disponible al shell de Python.
print("There is :nMB of available RAM".format(memory))
12. Crea una función llamada núcleos(). Esta función devolverá el recuento de núcleos físicos y la cantidad de subprocesos que tiene nuestra CPU.
def cores():
13. Cree objetos para almacenar la cantidad física de núcleos de CPU y la cantidad de subprocesos. Establecer el argumento logic=False obligará a psutil a devolver solo los núcleos físicos.
physical = psutil.cpu_count(logical=False)
threads = psutil.cpu_count()
14. Imprima el recuento de núcleos físicos y el subproceso en Python Shell.
print("This CPU has :n cores and :n threads".format(physical, threads))
15. Cree una nueva función, cpuspeed(). Utilice una declaración impresa, junto con algunos cálculos, para imprimir un título con diez * en cada lado.
def cpuspeed():
print("*"*10,"CPU Stats","*"*10)
dieciséis. Almacene los datos de velocidad actual de la CPU en un objeto llamado velocidad. Luego extraiga la velocidad actual y actualice el objeto. Inicialmente obtenemos una lista que contiene una tupla con tres valores, velocidad actual, velocidad mínima y máxima. Entonces necesitamos obtener datos de la primera entrada de la lista. [0]luego obtiene la primera entrada en la tupla [0].
speed = (speed[0][0])
17. Imprime la velocidad en Python Shell.
print("The CPU speed is :n MHz".format(speed))
18. Cree una función llamada all() y úsela para llamar a todas las funciones anteriores. Las funciones pueden llamar a otras funciones.
def all():
cpuspeed()
cores()
cpu()
ram()
19. Cree un controlador try/except y utilícelo while True: para ejecutar nuestro código. Esta sección intentará ejecutar nuestro código.
try:
while True:
20. Cree un objeto, una estadística y utilícelo para almacenar la elección del usuario. Usamos una función input() para capturar la entrada del teclado del usuario. También podemos crear un mensaje pidiendo al usuario su elección.
stat = input("Please type 'cpu', 'ram', 'cores', 'cpuspeed' or press ENTER to show all stats: ")
21. Utilice pruebas condicionales para verificar el valor almacenado en stat y enrutar el código a la opción correcta.
if stat == "cpu":
cpu()
elif stat == "ram":
ram()
elif stat == "cores":
cores()
elif stat == "cpuspeed":
cpuspeed()
22. Use else como una opción general que llamará a la función all() y mostrará todas las estadísticas para las que tenemos una función.
else:
all()
23. Cree una excepción para manejar al usuario que presiona CTRL+C para finalizar el código. Esto imprimirá Salir al Shell de Python.
except KeyboardInterrupt:
print("Exiting")
24. Guarde el código como performance.py y haga clic en Ejecutar >> Ejecutar script actual, o presione el botón verde de ejecutar. Verá que Python Shell le solicitará su opinión. Siga las instrucciones y los datos solicitados se mostrarán en el Shell.
Listado de códigos completo: uso de funciones para obtener datos de rendimiento de la PC
import psutil
def cpu():
cpu = str(psutil.cpu_percent())
print("Current CPU usage is :s%".format(cpu))
def ram():
print("*"*10,"RAM Stats","*"*10)
memory = psutil.virtual_memory()
memory = memory[1]
memory = round(memory / 1024 / 1024)
print("There is :nMB of available RAM".format(memory))
def cores():
physical = psutil.cpu_count(logical=False)
threads = psutil.cpu_count()
print("This CPU has :n cores and :n threads".format(physical, threads))
def cpuspeed():
print("*"*10,"CPU Stats","*"*10)
speed = psutil.cpu_freq([1])
speed = (speed[0][0])
print("The CPU speed is :n MHz".format(speed))
def all():
cpuspeed()
cores()
cpu()
ram()
try:
while True:
stat = input("Please type 'cpu', 'ram', 'cores', 'cpuspeed' or press ENTER to show all stats: ")
if stat == "cpu":
cpu()
elif stat == "ram":
ram()
elif stat == "cores":
cores()
elif stat == "cpuspeed":
cpuspeed()
else:
all()
except KeyboardInterrupt:
print("Exiting")