Resolver Reducir no está definido en Python

Olorunfemi Akinlua 21 junio 2023
Resolver Reducir no está definido en Python

De vez en cuando, a menudo nos encontramos con mensajes de error No definido y, más ampliamente, Error de nombre. Estos mensajes de error son típicos y fáciles de resolver si existe una comprensión simple de lo que se ha nombrado dentro de su código Python.

Los errores NameError y Not Defined provienen de una variable, enlace, función o biblioteca inexistente. Para este contexto, la función reducir no existe dentro de su código.

Este artículo discutirá cómo resolver el error reducir no está definido dentro de su código Python.

Use functools para resolver NameError: el nombre 'reduce' no está definido en Python

La función reduce() ayuda a calcular un solo valor de una lista usando una función lambda en cada elemento dentro de la lista. La función reduce() crea un valor tomando el elemento actual de la matriz y combinándolo o comparándolo con el valor actual hasta que pasa por todos los elementos dentro de la lista.

Antes de Python 3, la función reduce() funcionaba como una función integrada; por lo tanto, el siguiente fragmento de código para resumir todos los elementos dentro de una lista habría funcionado.

def anon(x, y):
    return x + y


sum = reduce(anon, [1, 2, 3, 4])
print(sum)

Sin embargo, si ejecuta el código anterior, daría el siguiente error:

Traceback (most recent call last):
  File "c:\Users\akinl\Documents\HTML\python\txt.py", line 2, in <module>
    l = reduce(anon, [1,2,3,4])
NameError: name 'reduce' is not defined

Esto se debe a que reduce() ya no es una función integrada, sino una función dentro de una biblioteca integrada llamada functools, que contiene funciones y operaciones de orden superior en objetos invocables. Como reduce() es una función de orden superior, tiene sentido estar presente.

reduce() es una función de orden superior porque toma como argumento otra función. Ahora, para hacer uso de reduce(), necesitamos importar functools:

import functools


def anon(x, y):
    return x + y


sum = functools.reduce(anon, [1, 2, 3, 4])
print(sum)

La salida del código:

10

Podemos facilitar dentro de nuestro código el uso de la palabra clave from para importar reduce:

from functools import reduce


def anon(x, y):
    return x + y


sum = reduce(anon, [1, 2, 3, 4])
print(sum)

La salida del código:

10

Ya no tenemos un error de “reducir no está definido” dentro de nuestro código y ahora podemos entender qué buscar cuando lo vemos.

Olorunfemi Akinlua avatar Olorunfemi Akinlua avatar

Olorunfemi is a lover of technology and computers. In addition, I write technology and coding content for developers and hobbyists. When not working, I learn to design, among other things.

LinkedIn

Artículo relacionado - Python Error