Quiero abordar una pregunta que puede que tenga o no, pero es algo que
me ha llevado años entender, y es por eso que ¿por qué no tener todo como variables globales?
Quiero decir, toda esta confusión de quién tiene acceso a quién, qué tan fácil sería si todo estuviera solo
en la página principal, toda nuestra información, todos los datos en nuestro alcance global para que todo tenga acceso
a todo.
¿No sería eso más fácil?
Y tendrías razón.
Quiero decir, eso haría que todo este dolor de cabeza desapareciera, ¿verdad?
Pero debes recordar que las máquinas no tienen potencia infinita, no tienen CPU infinita, no
tienen memoria infinita, todas tienen recursos limitados.
Y como programadores, tenemos que ser conscientes de qué recursos usamos porque a veces eso nos puede costar dinero, a
veces eso puede hacer fallar nuestras computadoras.
Y el alcance es una gran demostración de esto.
Por ejemplo, este código aquí mismo, cuando se ejecuta esta función, estamos creando técnicamente solo una
ubicación en la memoria para la variable X.
Entonces tenemos esa estantería en nuestra computadora que es X que apunta a local cuando realmente llamamos a esta
función.
Y luego, cuando decimos no local aquí, bueno, estamos diciendo que simplemente no cree otra estantería para nosotros.
Simplemente use el que ya tenemos y asígnelo no local.
Si no tuviéramos esta línea, para cuando llegamos a la línea siete, hemos colocado en la memoria X igual a local y
X igual a no local.
Así que ahora tenemos dos ubicaciones en la memoria.
Ahora, esto no es gran cosa porque, bueno, en esta época, tenemos mucha memoria.
Pero a medida que los programas se hacen más y más grandes, esto se convierte en un pequeño problema.
Bien, pero ¿qué pasa con una función?
Quiero decir, aprendimos que las funciones nos permiten no repetirnos y poder llamar varias
veces.
Pero otro buen uso de las funciones es que una vez que llamamos a esta función y todo esto está
hecho, la computadora y el intérprete de Python destruyen específicamente toda esta memoria.
Es decir, una vez que terminemos con la función externa, realmente no puedo llamar a print X aquí.
Me va a dar un error.
Dirá que no tengo idea de lo que existe.
¿Y por qué es eso?
Es porque después de llamar a esta función, el Python se llamará, el recolector de basura dirá, oye,
parece que hemos terminado con esta función.
Y veo que esta variable X bien, y esta variable X no la vamos a usar porque hemos terminado con esta
función.
Así que voy a recoger esa basura y luego simplemente tirarla.
Así que voy a vaciar ese armario de memoria para que otros recursos u otros programas puedan usarlo.
Y esa es una característica realmente agradable en la que Python simplemente los elimina automáticamente para que no obstruya
la memoria de la computadora.
Y es por eso que SCOP es útil.
No tenemos que pensar en ello con tanto detalle como lo he mencionado, pero es bueno
saber que está ahí para que sus programas no acaparen mucha memoria y puedan ejecutarse de manera eficiente.
Este es un tema un poco avanzado, pero quería incluirlo aquí para que pueda pensar por qué los programas
están diseñados de la forma en que están.
Está bien.
Voy a dejar de hablar ahora.
Te veo en el siguiente video.
Adiós.