1
+ """
2
+ ------------------
3
+ VALOR Y REFERENCIA
4
+ ------------------
5
+ EJERCICIO:
6
+ - Muestra ejemplos de asignación de variables "por valor" y "por referencia", según
7
+ su tipo de dato.
8
+ - Muestra ejemplos de funciones con variables que se les pasan "por valor" y
9
+ "por referencia", y cómo se comportan en cada caso en el momento de ser modificadas.
10
+ (Entender estos conceptos es algo esencial en la gran mayoría de lenguajes)
11
+
12
+ DIFICULTAD EXTRA (opcional):
13
+ Crea dos programas que reciban dos parámetros (cada uno) definidos como
14
+ variables anteriormente.
15
+ - Cada programa recibe, en un caso, dos parámetros por valor, y en otro caso, por referencia.
16
+ Estos parámetros los intercambia entre ellos en su interior, los retorna, y su retorno
17
+ se asigna a dos variables diferentes a las originales. A continuación, imprime
18
+ el valor de las variables originales y las nuevas, comprobando que se ha invertido
19
+ su valor en las segundas.
20
+ Comprueba también que se ha conservado el valor original en las primeras.
21
+ """
22
+
23
+ # Ejercicio
24
+
25
+ # Asignación de variable por valor
26
+
27
+ def fun_one (number : int ):
28
+ number *= 5
29
+
30
+ n = 10
31
+ fun_one (n )
32
+ print (n )
33
+
34
+ my_int_a = 20 # Otro ejemplo
35
+ my_int_b = my_int_a
36
+ my_int_b = 30
37
+ print (my_int_a )
38
+ print (my_int_b )
39
+
40
+ # Asignación de variable por referencia
41
+
42
+ def fun_two (my_list : list ):
43
+ for i , n in enumerate (my_list ):
44
+ my_list [i ] *= 2
45
+
46
+ l = [1 , 2 , 3 ]
47
+
48
+ fun_two (l )
49
+ print (l )
50
+
51
+ my_list_a = [10 , 20 ] # Otro ejemplo
52
+ my_list_b = my_list_a
53
+ my_list_b .append (30 )
54
+ print (my_list_a )
55
+ print (my_list_b )
56
+
57
+ # Ejercicio Extra
58
+
59
+ value_one = 1
60
+ value_two = 2
61
+
62
+ def my_fun (value_a : int , value_b : int ):
63
+ temp = value_a
64
+ value_a = value_b
65
+ value_b = temp
66
+ return value_a , value_b
67
+
68
+ print ("\n Asignación por valor:" )
69
+ value_three , value_four = (my_fun (value_one , value_two ))
70
+ print (f"Originales: { value_one } , { value_two } " )
71
+ print (f"Nuevos: { value_three } , { value_four } " )
72
+
73
+ value_ref_one = [10 , 20 ]
74
+ value_ref_two = [30 , 40 ]
75
+
76
+ def my_other_fun (value_a : list , value_b : list ):
77
+ temp = value_a
78
+ value_a = value_b
79
+ value_b = temp
80
+ value_a .append (50 )
81
+ value_b .append (30 )
82
+ return value_a , value_b
83
+
84
+ print ("\n Asignación por referencia:" )
85
+ value_three , value_four = my_other_fun (value_ref_one , value_ref_two )
86
+ print (f"Originales: { value_ref_one } , { value_ref_two } " )
87
+ print (f"Nuevos: { value_three } , { value_four } " )
0 commit comments