Idea principal

En Python, una función puede realizar acciones (modificar un objeto, imprimir información, escribir un archivo, etc.) y devolver un valor mediante return. Estas son dos operaciones independientes.

Una función no devuelve automáticamente el resultado de las acciones que realiza. Solo devuelve el valor indicado por return. Si no existe un return, Python devuelve None.

Ejemplo

def mensaje():
    print("Hola")
 
resultado = mensaje()
 
print(resultado)

Salida:

Hola
None

La función imprime "Hola", pero como no tiene return, el valor de resultado es None.

Modificar un objeto

Algunas funciones o métodos modifican directamente el objeto sobre el que trabajan y no devuelven un nuevo objeto.

numbers = [3, 1, 2]
 
numbers.sort()
 
print(numbers)

Salida:

[1, 2, 3]

sort() modifica la lista existente y devuelve None.

Por ello:

resultado = numbers.sort()
 
print(resultado)

produce:

None

Crear un nuevo objeto

Otras funciones no modifican el objeto original, sino que crean uno nuevo.

numbers = [3, 1, 2]
 
sorted_numbers = sorted(numbers)
 
print(numbers)
print(sorted_numbers)

Salida:

[3, 1, 2]
[1, 2, 3]

Regla práctica

Preguntarse siempre:

¿Esta función modifica un objeto existente o devuelve uno nuevo?

  • Modifica el objeto → normalmente devuelve None.
  • Devuelve un objeto nuevo → normalmente puede asignarse a una variable.

Ejemplos comunes

Modifica el objetoDevuelve un nuevo valor
list.sort()sorted()
list.append()sum()
list.extend()len()
list.reverse()max()
dict.update()min()

Idea clave

No confundir el efecto secundario de una función con su valor de retorno.

Una función puede modificar datos, imprimir información y devolver un valor distinto, o no devolver ninguno (None).