1+ # Asignacion de variables en python
2+ # En python los enteros, flotantes, cadenas y tuplas, sea signan por valor.
3+ # Esto significa que cuando asignas una variable a otra, se crea una copia independiente del valor.
4+
5+ # Asignacion por valor
6+ a = 10
7+ b = a
8+ print (f'a: { a } , b: { b } ' ) # 'b' recibe una copia de del valor de 'a'
9+
10+ # Modificamos b
11+ b = 20
12+ print (f'a:{ a } , b:{ b } ' ) # 'a' no se ve afectada ya que los enteros son inmutables.
13+
14+
15+ # Asignacion por referencia
16+ # En python las listas, diccionarios y conjuntos, se asignan por referencia.
17+ # Esto significa que cuando asignas una variable a otra, ambas apuntan al mismo objeto en memoria.
18+
19+ lista_1 = [1 , 2 ,3 ]
20+ lista_2 = lista_1
21+ print (f'Lista 1: { lista_1 } , Lista 2: { lista_2 } ' )
22+
23+ # Modificamos la lista 2
24+ lista_2 .append (4 )
25+ print (f'Lista 1: { lista_1 } , Lista 2: { lista_2 } ' ) # Al modificar la lista 2, tambien se modifica la lista 1
26+
27+ # Crear una copia independiente de un objeto mutable
28+ lista_1 = [1 , 2 ,3 ]
29+ lista_2 = lista_1 .copy () # Lista 2 es una copia independiente de lista 1
30+ print (f'Lista 1: { lista_1 } , Lista 2: { lista_2 } ' )
31+
32+ lista_2 .append (4 )
33+ print (f'Lista 1: { lista_1 } , Lista 2: { lista_2 } ' ) # Lista 1 no se ve afectada por los cambios de lista 2
34+
35+
36+ # Extra
37+
38+ # Función para intercambiar valores por valor
39+ def intercambiar_por_valor (a , b ):
40+ temp = a
41+ a = b
42+ b = temp
43+ return a , b
44+
45+ x = 10
46+ y = 20
47+
48+ nuevo_x , nuevo_y = intercambiar_por_valor (x , y )
49+
50+ print (f"Originales: x = { x } , y = { y } " )
51+ print (f"Nuevos: nuevo_x = { nuevo_x } , nuevo_y = { nuevo_y } " )
52+
53+
54+
55+
56+ # Función para intercambiar valores por referencia
57+ def intercambiar_por_referencia (lista1 , lista2 ):
58+ temp = lista1 [:]
59+ lista1 [:] = lista2 [:]
60+ lista2 [:] = temp
61+ return lista1 , lista2
62+
63+ lista_a = [1 , 2 , 3 ]
64+ lista_b = [4 , 5 , 6 ]
65+
66+ nueva_lista_a , nueva_lista_b = intercambiar_por_referencia (lista_a , lista_b )
67+
68+ print (f"Originales: lista_a = { lista_a } , lista_b = { lista_b } " )
69+ print (f"Nuevas: nueva_lista_a = { nueva_lista_a } , nueva_lista_b = { nueva_lista_b } " )
0 commit comments