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.
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