El siguiente código devuelve falso
import inspect print(inspect.isbuiltin(map))
Pero la función de mapa se encuentra en la lista de funciones "incorporadas" .
¿Por que es esto entonces?
El inspect.isbuiltin
solo
Devuelve verdadero si el objeto es una función o método integrado .
El map
incorporado es una clase , no una función o método:
>>> map <class 'map'>
De hecho, la mayoría de las "funciones integradas" que devuelven iteradores se implementan como clases; llamarlos devuelve instancias optimizadas en lugar de reutilizar alguna clase de iterador genérico.
>>> zip # zip iterator "function" is also a class <class 'zip'> >>> map(str, (1, 2, 34)) # map builds instances of map <map object at 0x103fa34f0>
Además, tenga en cuenta que el término "incorporado" tiene dos significados en Python:
builtins
, disponible en todos los módulos. Si bien la mayoría de los builtins
están compilados para la velocidad, esto no es necesario.
Si desea verificar si un nombre es parte de builtins
, hágalo a través del módulo:
>>> import builtins >>> hasattr(builtins, "map") True >>> hasattr(builtins, "sum") True >>> hasattr(builtins, "reduce") False