es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Python Pydantic Callable con argumento de función predeterminado.

Tengo una función que devuelve otra función. Ejemplo:

from typing import Callable, Optional

def create_object() -> Callable[[str, Optional[int]], str]:
   def create(name: str, length: int = 10) -> str:
      return # hacer algo
   return create

¿Cómo debo definir Callable para el parámetro de longitud con un valor predeterminado?
¿Si intento llamar a esta función solo con el nombre ( create_object()(‘Nombre’) ) PyCharm lo señalará con una advertencia de que falta el argumento de longitud?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para definir Callable para el parámetro de longitud con un valor por defecto, es necesario hacer que el parámetro de longitud sea opcional estableciendo su tipo como Optional[int]. Esto se puede hacer cambiando la definición de la función a:

    def create_object() -> Callable[[str, Optional[int]], str]:
        def create(name: str, length: Optional[int] = 10) -> str:
            # hacer algo
        return create
    

    Ahora, si llama a la función create_object() sin pasar un valor para el parámetro de longitud, éste tendrá un valor predeterminado de 10:

    func = create_object()
    result = func('Nombre')  # la longitud se establecerá en 10 por defecto
    

    Esto ya no generará una advertencia en PyCharm.

Comments are closed.