-
Notifications
You must be signed in to change notification settings - Fork 68
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Qué es una variable global? #424
Comments
Hola! no soy ayudante, pero tengo entendido que a |
Hola @rmaguilera y @sbcorrea, Muchas gracias @sbcorrea por responder issues aunque no seas ayudante <3, se aprecia mucho cuando alumnos se ayudan entre ellos. Te tengo que corregir un par de conceptos en tu comentario. Se considera variable global a cualquier variable que se defina fuera de una función o clase. Por lo tanto si tu main se ve de la siguiente manera:
Las variables
Ese consejo tampoco te sirve, ya que sigues usando variables globales aunque sean en otros módulos. Las únicas variables globales permitidas en tu programa son los datos en Ten en cuenta que para el ejemplo anterior no puedes agregar el "parámetro" Un modo de evitar este problema es meter el código base dentro de una función y hacer, por ejemplo, lo siguiente:
Espero haya quedado claro :), cualquier duda sigan comentando en la issue Éxito! |
Chuta! creo que tengo mucho código que reestructurar 😅 muchas gracias @jeschuwirth, te pasaste |
¿Se considera también una variable global si defino en un módulo una lista que necesito para instanciar un objeto, lo instancio y después al main solo importo el objeto? Me imaginaría que la lista ya no cuenta porque la dejé como botada en el módulo, ¿no? |
@sbcorrea, también sería una variable global si se encuentra "botada" dentro de un archivo, sin importar si la usas o no. Te recomiendo hacer lo que dices dentro de una función o método y retornar el objeto |
Pero y si solo uso la función una vez, ¿cuál es la idea de evitar las
variables globales? Lo digo en este caso por los menús, porque todos van a
ser de la clase Menu pero todos van a tener una lista distinta de
self.opciones. Puedo implementar una función que haga las opciones, pero
literalmente solo sería algo como
def hacer_lista_opciones_menu_x():
li = ['Volver atrás', 'Hacer otra cosa', ..., 'Salir']
return li
Lo cual consumiría muchas mas lineas y no haría nada muy especial... Claro,
también podría hacer una subclase de Menu para cada menu, que solo haya una
instancia de cada una, y definir esa lista en los atributos, pero por una
parte me parece todavía más ineficiente, y por otra, algo me dice que el
*hardcoding* todavía está presente por mucho que lo meta en una clase, ¿o
no? Por lo tanto, no entiendo a lo que debería estar apuntando :( ¿me lo
explicas, porfa?
Slds
El lun., 13 de abril de 2020 5:17 p. m., jeschuwirth <
notifications@github.com> escribió:
… @sbcorrea <https://github.com/sbcorrea>, también sería una variable
global si se encuentra "botada" dentro de un archivo, sin importar si la
usas o no.
Te recomiendo hacer lo que dices dentro de una función o método y retornar
el objeto
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<IIC2233/Syllabus#424 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AOZAS2CVPNHCKS7WDZUQWETRMNXPFANCNFSM4MGGXOWA>
.
|
Muy buen ejemplo :D Como base, las opciones de cada menú podría ser un parametro en parámetros sin problemas, ya que estos no cambian con la ejecución del código. Dicho lo anterior, aunque tiene mucho sentido el modo como quieres hacer las clases menu, ten mucho cuidado con como vas a ejecutar la elección del usuario, es decir, como vas a unir todos los strings que le entreges en opciones a un menu estandar con lo que hace cada opción. |
AAAAH YAYA, es que había leído en otros issues que los prints no eran parámetros, entonces no sabía que las opciones del menú podían serlo. En ese caso, ningún problema. ¡Muchas gracias! |
@sbcorrea, ten en cuenta que un print no es parámetro, las opciones de los menu podrían serlo. Colocar:
no es un parámetro válido, pero puedes darle más forma de parámetro haciendo: |
Entiendo. ¡Gracias!
El lun., 13 abr. 2020 a las 18:08, jeschuwirth (<notifications@github.com>)
escribió:
… @sbcorrea <https://github.com/sbcorrea>, ten en cuenta que un print no es
parámetro, las opciones de los menu podrían serlo.
Colocar:
menu = "Bienvenido a T1, para continuar debes hacer una de las siguientes opciones:
1) opcion
2) opcion
....
x) opcion"
*no* es un parámetro válido, pero puedes darle más forma de parámetro
haciendo:
OPCIONES_MENU_INICIO = ["opcion","opcion","opcion"]
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<IIC2233/Syllabus#424 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AOZAS2F6GZ2YTXTHJDR5H3DRMOEOFANCNFSM4MGGXOWA>
.
|
El utilizar "continuar = True" para un while en el main sería considerado una variable global?, el definir en el main ciertos diccionarios o listas seria considera uso de variables globales?
The text was updated successfully, but these errors were encountered: