Funciones de Python

Programación de Funciones

Una función es un bloque de código organizado que se utiliza para realizar una única tarea. Proporcionan una mejor modularidad para su aplicación y reutilización.

Argumentos de Función

Una función puede recibir argumentos y valores de retorno:

En el siguiente ejemplo, la función say_hello recibe el argumento “name” e imprime un saludo:

# Definir una función que toma un argumento
def say_hello(name):
   print(f'Hello {name}')

# Llamar a la función con un argumento de cadena
say_hello('Carlos')
Hello Carlos
say_hello('Wanda')
Hello Wanda
say_hello('Rose')
Hello Rose

Argumentos de Palabra Clave (Keyword Arguments)

Para mejorar la legibilidad del código, debemos ser lo más explícitos posible. Podemos lograr esto en nuestras funciones utilizando Argumentos de Palabra Clave (Keyword Arguments):

# Función con múltiples parámetros
def say_hi(name, greeting):
   print(f"{greeting} {name}")

# Argumentos posicionales: el orden importa
say_hi('John', 'Hello')
Hello John
# Argumentos de palabra clave: el orden no importa, más legible
say_hi(name='Anna', greeting='Hi')
Hi Anna
Quiz

Inicia sesión para responder este quiz y rastrear tu progreso de aprendizaje

What is the main advantage of using keyword arguments in Python functions?
A. They execute faster
B. They use less memory
C. They improve code readability and order doesn't matter
D. They prevent errors

Valores de Retorno

Al crear una función usando la declaración def, puede especificar cuál debe ser el valor de retorno con una declaración return. Una declaración de retorno consta de lo siguiente:

  • La palabra clave return.

  • El valor o expresión que la función debe devolver.

# Función que devuelve un valor usando la declaración return
def sum_two_numbers(number_1, number_2):
   return number_1 + number_2

# Llamar a la función y almacenar el valor devuelto
result = sum_two_numbers(7, 8)
print(result)
15
Quiz

Inicia sesión para responder este quiz y rastrear tu progreso de aprendizaje

What keyword is used to return a value from a function in Python?
A. return
B. output
C. yield
D. exit

Alcance Local y Global (Local and Global Scope)

  • El código en el alcance global no puede usar ninguna variable local.

  • Sin embargo, un alcance local puede acceder a variables globales.

  • El código en el alcance local de una función no puede usar variables en ningún otro alcance local.

  • Puede usar el mismo nombre para diferentes variables si están en diferentes alcances. Es decir, puede haber una variable local llamada spam y una variable global también llamada spam.

# Variable global: accesible en todas partes
global_variable = 'I am available everywhere'

def some_function():
    print(global_variable)  # Puede acceder a la variable global
    # Variable local: solo existe dentro de esta función
    local_variable = "only available within this function"
    print(local_variable)

# Esto generará NameError: local_variable no existe en el alcance global
print(local_variable)
Traceback (most recent call last):
  File "<stdin>", line 10, in <module>
NameError: name 'local_variable' is not defined

La Declaración global

Si necesita modificar una variable global desde dentro de una función, use la declaración global:

# Usar la palabra clave 'global' para modificar la variable global desde dentro de la función
def spam():
    global eggs  # Declarar que estamos modificando la variable global
    eggs = 'spam'  # Esto cambia la variable global

eggs = 'global'
spam()  # La función modifica la variable global
print(eggs)  # Imprime 'spam', no 'global'
spam
Quiz

Inicia sesión para responder este quiz y rastrear tu progreso de aprendizaje

What keyword must you use inside a function to modify a global variable?
A. nonlocal
B. global
C. extern
D. No keyword needed

Hay cuatro reglas para saber si una variable está en un alcance local o global:

  1. Si una variable se utiliza en el alcance global (es decir, fuera de todas las funciones), siempre es una variable global.

  2. Si hay una declaración global para esa variable en una función, es una variable global.

  3. De lo contrario, si la variable se utiliza en una declaración de asignación en la función, es una variable local.

  4. Pero si la variable no se utiliza en una declaración de asignación, es una variable global.

Funciones Lambda

En Python, una función lambda es una función anónima de una sola línea, que puede tener cualquier número de argumentos, pero solo puede tener una expresión.

Del Tutorial de Python 3

lambda es una definición de función mínima que se puede utilizar dentro de una expresión. A diferencia de FunctionDef, el cuerpo contiene un único nodo.

Expresión de una sola línea

Las funciones Lambda solo pueden evaluar una expresión, como una sola línea de código.

Esta función:

# Definición de función regular
def add(x, y):
    return x + y

add(5, 3)
8

Es equivalente a la función lambda:

# Función Lambda: función anónima definida en una línea
# Sintaxis: lambda argumentos: expresión
add = lambda x, y: x + y
add(5, 3)
8
Quiz

Inicia sesión para responder este quiz y rastrear tu progreso de aprendizaje

What is a lambda function in Python?
A. A function that can only be called once
B. A function that takes no arguments
C. A function that returns multiple values
D. A single-line anonymous function that can have any number of arguments but only one expression

Al igual que las funciones anidadas regulares, las lambdas también funcionan como cierres léxicos:

# Cierre Lambda: función lambda que captura variables del ámbito exterior
def make_adder(n):
    return lambda x: x + n  # Lambda captura 'n' de la función externa

# Crear funciones que suman diferentes cantidades
plus_3 = make_adder(3)  # Devuelve lambda que suma 3
plus_5 = make_adder(5)  # Devuelve lambda que suma 5

plus_3(4)  # Devuelve 4 + 3 = 7
7
plus_5(4)
9
Quiz

Inicia sesión para responder este quiz y rastrear tu progreso de aprendizaje

What does a lambda closure allow you to do?
A. Capture variables from the outer scope
B. Modify global variables without the global keyword
C. Return multiple values
D. Execute code asynchronously

Enlaces relevantes