Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

217
Vistas
¿Los objetos de fecha y hora deben copiarse en profundidad?

Así que me di cuenta la otra semana durante la ejecución de un experimento, que, a pesar de ser un lenguaje de alto nivel, puedes hacer copias de variables simplemente asignándolas así:

 a = 5 b = a print(b) # 5 b = 3 print(b) # 3 print(a) # 5

...si trata los diccionarios o posiblemente las listas de la misma manera, ¡se despega! Creé un error en mi código la otra semana pensando que los diccionarios funcionaban de la misma manera. Descubrí que para hacer una copia adecuada y profunda necesitas ir:

 b = dict(a)

De todos modos, estoy ocupado con objetos de fecha y hora y los estoy manipulando como si fueran números enteros, ahora estoy empezando a ponerme un poco nervioso en cuanto a si esto está bien. Todo parece un poco arbitrario dónde funciona y dónde no, ¿tengo que ejecutar un experimento cada vez solo para verificar su comportamiento? Puedo adivinar que las cadenas probablemente funcionan como números enteros, pero no estoy seguro de dónde cambia el comportamiento.

Puedo ver que alguien ha preguntado sobre esto para PHP, pero para Python me inclino a pensar que cualquier asignación de un objeto de fecha y hora sería una copia adecuada y profunda y nunca interferiría accidentalmente con la variable original. ¿Alguien sabe con seguridad?

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Dado que todos los tipos disponibles en el módulo de datetime están documentados como inmutables (justo después de la documentación de las clases se indica):

Los objetos de este tipo son inmutables.

no deberías preocuparte por esto.

Las operaciones en una instancia de fecha y hora devolverán una nueva instancia, por lo que no afectará a ningún otro nombre que haga referencia a la anterior.

Es posible que desee echar un vistazo al enlace proporcionado por PM 2Ring que explica hechos y mitos sobre cómo funcionan los nombres y valores . Eso debería arrojar algo de luz sobre cualquier confusión que tenga sobre los nombres.

over 4 years ago · Santiago Trujillo Denunciar

0

No hay nada arbitrario en esto.

Todas las asignaciones en Python son referencias. Nunca se hace copia en la asignación.

Si tiene la capacidad de mutar el objeto, cualquier mutación afectará naturalmente todas las referencias a ese objeto.

La única razón por la que no ve esto con enteros o cadenas en su código original es que no está mutando los objetos, simplemente los está reasignando. Los enteros y las cadenas, así como las fechas y horas, no tienen forma de mutar, por lo que lo único que puede hacer es reasignarlos. Si reasignó una lista, un dictado o una fecha y hora, tampoco verá el cambio propagado a otras referencias.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda