Bienvenido de nuevo.
Intentemos responder algunas preguntas que pueda tener, por ejemplo, ¿qué pasa con los parámetros?
Si hago un parámetro, digamos estar aquí, ¿qué es este parámetro cuando uso B así?
Así que digamos imprimir.
B y aquí, me confundiré con, digamos, el número trescientos si ejecuto esto.
Esto funciona.
Y eso es porque el parámetro es parte del alcance local, es parte de esto.
Entonces, los parámetros se consideran variables locales.
Podemos usarlo dentro de la función, pero podemos usarlo fuera de esas funciones.
Técnicamente, cuando definimos la función, le dejamos saber al intérprete, oye, B va a ser una variable
local.
OK, ¿qué pasa con esto?
¿Y si tenemos esto, eh?
Pero quiero asegurarme dentro de mi función de que en realidad me refiero a la A global,
¿hay alguna manera de que usemos este valor sin crear una nueva variable?
Bueno, usemos un mejor ejemplo para esto.
Digamos que quería crear un contador.
Entonces tendremos total igual a cero.
Y luego aquí.
Voy a decir definir el recuento.
Y esta función va a decir total.
Más es igual a uno.
Entonces, vamos a agregar cada vez que agreguemos el recuento, se incrementará de cero en uno y luego
uno por uno, y así sucesivamente.
Entonces, devolveremos el total al final de esto.
Bien, entonces si corro aquí, imprima.
Contar.
Veamos qué pasa.
Voy a pegarle a correr.
Y obtengo otra variable local total referenciada antes de la asignación, y eso se debe a que, bueno, Count no sabe sobre
el total.
Estás intentando usar el total, pero aún no hemos asignado nada.
Pero queremos que se ejecute el total del mundo exterior, porque si lo hago, el total es igual a cero aquí y
ejecuto el recuento.
Eso es genial, tengo uno, pero ¿y si quisiera contar varias veces?
¿Y si quisiera contar?
Digamos tres veces para que el total de la cuenta sea tres.
Así que imprimamos en el último aquí.
Y hago clic en ejecutar.
Todavía obtengo uno porque cada vez que ejecutamos la función, restablecemos el total a cero.
Eso no es muy útil, ¿verdad?
Entonces, una forma en que podemos solucionar esto es usando lo que llamamos la palabra clave global en Python y global dice que use
el total global si existe aquí, de modo que en lugar de tener que crear una nueva variable, pueda
usar la variable global total.
Mira esto.
Bueno, obtengo una sintaxis no válida, y eso se debe a que primero tenemos que decir que el total global
se usará aquí y luego podemos decir que el total más es igual a uno si ejecuto esto.
Una mirada a eso, tenemos un contador adecuado, por lo que global es una forma de acceder a esta variable global.
Sin embargo, sostengo que esta no es una buena forma de hacer las cosas porque puede resultar muy confuso
cuando comienzas a agregar Global's y todos estos universos diferentes acceden a las variables de los demás, una
mejor manera de hacerlo es algo llamado inyección de dependencia, y esta es una versión simplificada.
Pero la idea es que en lugar de acceder a variables fuera de la función de esta manera, lo que puede volverse muy, muy complicado a medida
que los archivos se hacen cada vez más grandes, es lo que hay que hacer.
En lugar de esto.
Total.
Así, creamos un parámetro y luego pasamos ese parámetro.
O argumento aquí.
Pero como puede ver, sigue siendo uno porque cuando imprimimos el tercer total, bueno, esto nunca
cambia.
Este es un cero global.
Entonces, en cambio, podemos hacer algo como esto, podemos decir contar el total, del cual vamos a contar
nuevamente.
Y luego vuelve a contar.
Si ejecuto esto.
Tengo tres y sé lo que estás pensando, esto es completamente loco, parece confuso.
Mira todos estos corchetes.
Pero déjame mostrarte lo que realmente hemos hecho.
Podemos separar la dependencia o el efecto que esto no puede tener en el alcance global externo y, en cambio,
solo enfocarnos en su salud.
Todo lo que teníamos que hacer era decir, oye, quiero que cuentes con un total de cero.
Y luego, después de eso, esto evaluará dos uno.
Y luego contamos un total de uno más uno va a ser igual a dos y luego contamos dos más uno va a
ser igual a tres.
De esta manera, aún podemos hacer nuestro recuento sin tener que usar esa palabra clave global, que yo diría que
es mejor.
Eso sí, si es la primera vez que ve esto, puede resultar un poco complicado.
Pero al menos de esta manera, sabes que hay diferentes formas de hacer las cosas.
Otra palabra que quiero mostrarles es algo que se llama no local.
Pero para eso, tomemos un descanso y nos vemos en el siguiente video.