1
+ '''
2
+ * EJERCICIO:
3
+ * - Muestra ejemplos de asignación de variables "por valor" y "por referencia", según
4
+ * su tipo de dato.
5
+ * - Muestra ejemplos de funciones con variables que se les pasan "por valor" y
6
+ * "por referencia", y cómo se comportan en cada caso en el momento de ser modificadas.
7
+ * (Entender estos conceptos es algo esencial en la gran mayoría de lenguajes)
8
+ *
9
+ * DIFICULTAD EXTRA (opcional):
10
+ * Crea dos programas que reciban dos parámetros (cada uno) definidos como variables anteriormente.
11
+ * - Cada programa recibe, en un caso, dos parámetros por valor, y en otro caso, por referencia.
12
+ * Estos parámetros los intercambia entre ellos en su interior, los retorna, y su retorno
13
+ * se asigna a dos variables diferentes a las originales. A continuación, imprime el valor de las
14
+ * variables originales y las nuevas, comprobando que se ha invertido su valor en las segundas.
15
+ * Comprueba también que se ha conservado el valor original en las primeras.
16
+ '''
17
+
18
+ # Tipos de dato por valor.
19
+
20
+ my_int_a = 10
21
+ my_int_b = my_int_a
22
+ # my_int_b = 20
23
+ # my_int_a = 30
24
+ print (my_int_a )
25
+ print (my_int_b )
26
+
27
+ # Tipos de dato por referencia.
28
+
29
+ my_list_a = [10 , 20 ]
30
+ my_list_b = my_list_a
31
+ my_list_b .append (30 )
32
+ print (my_list_a )
33
+ print (my_list_b ) # Los datos por referencia no copian el valor, lo que hacen es copiar su dirección de la memoria.
34
+
35
+ # Funciones con datos por valor
36
+
37
+ my_int_c = 10
38
+ def my_int_func (my_int : int ):
39
+ my_int = 20
40
+ print (my_int )
41
+
42
+ my_int_func (my_int_c )
43
+ print (my_int_c )
44
+
45
+ # Funciones con datos por referencia
46
+
47
+ my_list_c = [10 , 20 ]
48
+
49
+ def my_list_func (my_list : list ):
50
+ my_list .append (30 )
51
+ my_list_d = my_list
52
+ my_list_d .append (40 )
53
+
54
+ print (my_list )
55
+ print (my_list_d )
56
+
57
+ my_list_func (my_list_c )
58
+ print (my_list_c )
59
+
60
+ '''
61
+ * DIFICULTAD EXTRA (opcional):
62
+ * Crea dos programas que reciban dos parámetros (cada uno) definidos como variables anteriormente.
63
+ * - Cada programa recibe, en un caso, dos parámetros por valor, y en otro caso, por referencia.
64
+ * Estos parámetros los intercambia entre ellos en su interior, los retorna, y su retorno
65
+ * se asigna a dos variables diferentes a las originales. A continuación, imprime el valor de las
66
+ * variables originales y las nuevas, comprobando que se ha invertido su valor en las segundas.
67
+ * Comprueba también que se ha conservado el valor original en las primeras.
68
+ '''
69
+
70
+ # Por valor
71
+
72
+ def value (value_a : int , value_b : int ) -> tuple :
73
+ temp = value_a
74
+ value_a = value_b
75
+ value_b = temp
76
+ return value_a , value_b
77
+
78
+ my_int_d = 10
79
+ my_int_e = 20
80
+ my_int_f , my_int_g = value (my_int_d , my_int_e )
81
+
82
+ print (f'{ my_int_d } , { my_int_e } ' )
83
+ print (f'{ my_int_f } , { my_int_g } ' )
84
+
85
+ # Por referencia
86
+
87
+ def ref (value_a : list , value_b : list ) -> tuple :
88
+ temp = value_a
89
+ value_a = value_b
90
+ value_b = temp
91
+ return value_a , value_b
92
+
93
+ my_list_e = [10 , 20 ]
94
+ my_list_f = [30 , 40 ]
95
+ my_list_g , my_list_h = ref (my_list_e , my_list_f )
96
+
97
+ print (f'{ my_list_e } , { my_list_f } ' )
98
+ print (f'{ my_list_g } , { my_list_h } ' )
0 commit comments