1
+ '''EJERCICIO:
2
+ - Muestra ejemplos de asignación de variables "por valor" y "por referencia", según
3
+ su tipo de dato.
4
+ - Muestra ejemplos de funciones con variables que se les pasan "por valor" y
5
+ "por referencia", y cómo se comportan en cada caso en el momento de ser modificadas.
6
+ (Entender estos conceptos es algo esencial en la gran mayoría de lenguajes)
7
+
8
+ DIFICULTAD EXTRA (opcional):
9
+ Crea dos programas que reciban dos parámetros (cada uno) definidos como variables anteriormente.
10
+ - Cada programa recibe, en un caso, dos parámetros por valor, y en otro caso, por referencia.
11
+ Estos parámetros los intercambia entre ellos en su interior, los retorna, y su retorno
12
+ se asigna a dos variables diferentes a las originales. A continuación, imprime el valor de las
13
+ variables originales y las nuevas, comprobando que se ha invertido su valor en las segundas.
14
+ Comprueba también que se ha conservado el valor original en las primeras.'''
15
+
16
+ # Asignación de variables por valor
17
+ a = 5 # Asignación por valor
18
+ b = a # Asignación por valor
19
+ a = 10 # Modificación de a
20
+ print (a ) # a vale 10
21
+ print (b ) # b sigue valiendo 5
22
+ b = 15 # Modificación de b
23
+ print (b ) # b vale 15
24
+
25
+ # Asignación de variables por referencia
26
+ lista1 = [1 , 2 , 3 ] # Asignación por referencia
27
+ lista2 = lista1 # Asignación por referencia
28
+ lista2 .append (4 ) # Modificación de lista2
29
+ print (lista1 ) # lista1 vale [1, 2, 3, 4]
30
+ print (lista2 ) # lista2 vale [1, 2, 3, 4]
31
+ lista1 .append (5 ) # Modificación de lista1
32
+ print (lista1 ) # lista1 vale [1, 2, 3, 4, 5]
33
+ print (lista2 ) # lista2 vale [1, 2, 3, 4, 5]
34
+
35
+ # Funciones con variables por valor
36
+ def int_func (var_int :int ):
37
+ var_int = 10
38
+ return var_int
39
+
40
+ c = 2
41
+ print (int_func (c )) # Imprime 10
42
+ print (c ) # Imprime 2
43
+
44
+ # Funciones con variables por referencia
45
+ def list_func (var_list :list ):
46
+ var_list .append (4 )
47
+ lista = var_list
48
+ lista .append (5 )
49
+ print (var_list ) # Imprime [1, 2, 3, 4, 5]
50
+ print (lista ) # Imprime [1, 2, 3, 4, 5]
51
+
52
+ var_lista = [1 , 2 , 3 ]
53
+ list_func (var_lista )
54
+ print (var_lista ) # Imprime [1, 2, 3, 4, 5]
55
+
56
+ # EXTRA
57
+ '''Crea dos programas que reciban dos parámetros (cada uno) definidos como variables anteriormente.
58
+ - Cada programa recibe, en un caso, dos parámetros por valor, y en otro caso, por referencia.
59
+ Estos parámetros los intercambia entre ellos en su interior, los retorna, y su retorno
60
+ se asigna a dos variables diferentes a las originales. A continuación, imprime el valor de las
61
+ variables originales y las nuevas, comprobando que se ha invertido su valor en las segundas.
62
+ Comprueba también que se ha conservado el valor original en las primeras.'''
63
+
64
+ # Por valor
65
+ def value (value1 :int , value2 :int ):
66
+ temp = value1
67
+ value1 = value2
68
+ value2 = temp
69
+ return value1 , value2
70
+
71
+ value3 = 5
72
+ value4 = 10
73
+ value5 , value6 = value (value3 , value4 )
74
+
75
+ print (f'{ value3 } , { value4 } ' ) # Imprime 5, 10
76
+ print (f'{ value5 } , { value6 } ' ) # Imprime 10, 5
77
+
78
+ # Por referencia
79
+ def reference (ref1 :list , ref2 :list ):
80
+ temp = ref1
81
+ ref1 = ref2
82
+ ref2 = temp
83
+ return ref1 , ref2
84
+
85
+ ref3 = [1 , 2 , 3 ]
86
+ ref4 = [4 , 5 , 6 ]
87
+ ref5 , ref6 = reference (ref3 , ref4 )
88
+
89
+ print (f'{ ref3 } , { ref4 } ' ) # Imprime [1, 2, 3], [4, 5, 6]
90
+ print (f'{ ref5 } , { ref6 } ' ) # Imprime [4, 5, 6], [1, 2, 3]
0 commit comments