"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo puedo determinar si una variable de Python representa una función?

¿Cómo puedo determinar si una variable de Python representa una función?

Publicado el 2024-11-12
Navegar:745

How can I Determine if a Python Variable Represents a Function?

Cómo determinar si una variable representa una función en Python

En Python, puede resultar útil comprobar si una variable apunta a una función. Inicialmente, se podría considerar usar isinstance(x, función), pero Python genera un NameError para la clase de función no definida.

Objetos invocables y hasattr

Para determinar si La variable es una función, Python ofrece invocable(). Para Python 2.x y Python 3.2, este método proporciona la funcionalidad para comprobar si hay objetos invocables. Alternativamente, para Python 3.x anterior a 3.2, se puede usar hasattr(obj, '__call__') para examinar si el objeto posee un atributo __call__ característico de los objetos invocables.

Advertencias con los tipos.FunctionType e inspect.isfunction

Si bien se han sugerido enfoques que utilizan tipos.FunctionTypes o inspect.isfunction, estos métodos tienen limitaciones. Devuelven False para funciones que no son de Python. Las funciones integradas, implementadas en C, no superan esta verificación, aunque sean invocables:

>>> isinstance(open, types.FunctionType)
False
>>> callable(open)
True

Por lo tanto, verificar la naturaleza invocable de un objeto debería implicar verificar explícitamente su capacidad para ser invocado, no su conformidad con una definición de clase específica.

Declaración de liberación Este artículo se reimprime en: 1729252937 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3