Curso gratuito de Python. Regístrate para hacer un seguimiento de tu progreso →

Python: Parámetros de las funciones

Las funciones no solamente pueden devolver valores, sino también recibir parámetros. En esta lección aprenderemos a crear funciones que acepten parámetros.

Recordemos que ya nos hemos encontrado con funciones que tienen parámetros:

# Recibe un parámetro de cualquier tipo
print('soy un parámetro')
# Recibe dos parámetros de tipo cadena
# el primero es lo que buscamos, el segundo es por qué lo reemplazamos
'google'.replace('go', 'mo')  # moogle
# Recibe dos parámetros numéricos
# el primero es el número a redondear, el segundo es la cantidad de decimales que queremos mantener
round(10.23456, 3)  # 10.235

Ahora imaginemos que necesitamos implementar la función get_last_char(), que devuelve el último carácter de una cadena que se le pasa como parámetro.

Así es como se usaría esta función:

# Pasando los parámetros directamente sin variables
get_last_char("Hexlet")  # t
# Pasando los parámetros a través de variables
name1 = 'Hexlet'
get_last_char(name1)  # t
name2 = 'Goo'
get_last_char(name2)  # o

De este ejemplo podemos sacar las siguientes conclusiones:

  • Necesitamos definir la función get_last_char()
  • La función debe recibir un parámetro de tipo cadena
  • La función debe devolver un valor de tipo cadena

Definimos la función:

def get_last_char(text):
    return text[-1]

Entre paréntesis se especifica el nombre de la variable text, que es el parámetro. El nombre del parámetro puede ser cualquier cosa, lo importante es que refleje el significado del valor que contiene. Por ejemplo:

def get_last_char(string):
    return string[-1]

El valor del parámetro dependerá de cómo se llame a esta función:

# Dentro de la función, string será igual a 'hexlet'
get_last_char('hexlet')  # t

# Dentro de la función, string será igual a 'code'
get_last_char('code')  # e

# Dentro de la función, cadena o string será igual a 'Winter is coming'
# El nombre de la variable fuera de la función no está relacionado con el nombre de la variable en la definición de la función
text = 'Winter is coming'
get_last_char(text)  # g

https://replit.com/@hexlet/python-basics-define-functions-parameters

Es obligatorio especificar el parámetro. Si se llama a la función sin él, el intérprete mostrará un error:

get_last_char()  # Este código no tiene sentido

TypeError: get_last_char() missing 1 required positional argument: 'string'

Muchas funciones trabajan con varios parámetros al mismo tiempo. Por ejemplo, para redondear números, es necesario especificar tanto el número en sí como la cantidad de decimales:

round(10.23456, 3)  # 10.235

Lo mismo ocurre con los métodos. Pueden requerir cualquier cantidad de parámetros para funcionar:

# El primer parámetro es lo que buscamos
# El segundo parámetro es por qué lo reemplazamos
'google'.replace('go', 'mo')  # moogle

Para crear funciones y métodos de este tipo, es necesario especificar la cantidad necesaria de parámetros separados por comas. También es importante darles nombres descriptivos.

A continuación se muestra un ejemplo de definición de la función replace(), que reemplaza una parte de una cadena por otra:

def replace(text, from, to):
    # Aquí va el cuerpo de la función
    # pero lo omitimos para no distraernos

replace('google', 'go', 'mo')  # moogle

Cuando hay dos o más parámetros, el orden en que se pasan a la función es casi siempre importante. Si se cambia el orden, la función se comportará de manera diferente:

# No se reemplaza nada,
# ya que no hay 'mo' en 'google'
replace('google', 'mo', 'go')  # google

Ahora sabes cómo crear funciones que pueden recibir parámetros.

Tarea

Completa la función truncate(), que recorta una cadena pasada como parámetro hasta un número determinado de caracteres, agrega puntos suspensivos al final y devuelve la cadena resultante. Esta lógica se utiliza a menudo en sitios web para mostrar texto largo de forma abreviada.

La función recibe dos parámetros:

  1. La cadena que se debe recortar
  2. El número de caracteres que se deben mantener

Aquí tienes un ejemplo de cómo debería funcionar la función que escribas:

# Pasando el texto directamente
# Recortamos el texto dejando 2 caracteres
recortar('hexlet', 2)  # 'he...'

# A través de una variable
text = 'it works!!'
# Recortamos el texto dejando 4 caracteres
truncate(text, 4)  # '¡it w...'

Puedes resolver este ejercicio de diferentes maneras, pero te daremos una pista. Para resolverlo de esta manera, tendrás que tomar una subcadena de la cadena que se pasa como primer parámetro a la función. Utiliza segmentos de cadenas para hacerlo. Piensa, en función del enunciado, desde qué índice y hasta qué índice debes extraer la subcadena.

word = 'welcome!'
index = 3
word[:index] # wel
¿El ejercicio no pasa la prueba, qué debo hacer? 😶

Si te quedaste atascado, es el momento perfecto para hacer una pregunta en las "Discusiones".
* Asegúrate de incluir la salida de las pruebas. Sin ella, es casi imposible entender qué está mal, incluso si muestras tu código. Los programadores tienen dificultades para ejecutar el código en su mente, pero casi siempre es posible entender a dónde mirar a partir del error que recibiste.

Mi código funciona en mi entorno, pero no aquí 🤨

Las pruebas están diseñadas de manera que verifican la solución de diferentes maneras y con diferentes datos. A menudo, una solución funciona con ciertos datos de entrada pero no con otros. Para entender este punto, revisa la pestaña "Pruebas" y presta atención a los mensajes de error, que suelen contener pistas.

Mi código es diferente a la solución del profesor 🤔

Esto es normal 🙆. En programación, una tarea puede tener muchas soluciones diferentes. Si tu código pasa la prueba, cumple con los requisitos de la tarea.

En raras ocasiones, la solución puede estar ajustada para pasar las pruebas, pero esto suele ser evidente.

Leí la lección, pero no entendí nada 🙄

Crear materiales de aprendizaje comprensibles para todos es bastante difícil. Hacemos nuestro mejor esfuerzo, pero siempre hay margen para mejorar. Si encuentras material que no entiendes, describe el problema en las "Discusiones". Es ideal si puedes formular los aspectos que no entiendes en forma de preguntas. Por lo general, necesitamos unos días para hacer mejoras.

Por cierto, tú también puedes contribuir a mejorar los cursos: en la parte inferior hay un enlace al código fuente de las lecciones, que se puede modificar directamente en el navegador.

Consejos útiles


¿Encontraste un error? ¿Quieres añadir algo? Las solicitudes de extracción son bienvenidas. https://codica.la/errores
Si te encuentras con dificultades y no sabes qué hacer, pregunta en nuestra gran y amigable comunidad