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.

Obteniendo diferentes valores para el tipo Decimal en el Contexto Local.

He escrito el siguiente código para determinar el tipo de decimal localcontext:

print('tipo de decimal.localcontext():', type(decimal.localcontext()))

Salida:

tipo de decimal.localcontext():  #ContextManager

Sin embargo, el siguiente código está devolviendo una salida diferente para tipo:

with decimal.localcontext() as ctx1:
    print(type(ctx1))

Salida:


Mi pregunta es por qué el segundo fragmento de código está devolviendo decimal.Context en lugar de decimal.ContextManager.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El primer fragmento de código simplemente imprime el tipo de la función decimal.localcontext(), que es un objeto ContextManager. Sin embargo, el segundo fragmento de código realmente crea un nuevo contexto utilizando la declaración with y devuelve un objeto Context.

    El objeto ContextManager devuelto por decimal.localcontext() se utiliza para crear un nuevo contexto, y la declaración with es la que realmente crea el nuevo contexto. Cuando se ingresa la declaración with, se llama al método __enter__() del objeto ContextManager y devuelve el nuevo objeto Context. Por lo tanto, la función type() en el segundo fragmento de código devuelve el tipo del nuevo objeto Context, no del objeto ContextManager.

    Entonces, la diferencia en la salida se debe a que el primer fragmento de código simplemente imprime el tipo del objeto ContextManager, mientras que el segundo fragmento de código realmente crea un nuevo contexto y devuelve el tipo de ese contexto.

Comments are closed.