Skip to content
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

Closed
rmaguilera opened this issue Apr 12, 2020 · 10 comments
Closed

Qué es una variable global? #424

rmaguilera opened this issue Apr 12, 2020 · 10 comments
Assignees
Labels
contenidos Issues relacionadas con los contenidos del curso resuelto Issues resueltas

Comments

@rmaguilera
Copy link

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?

@sofiacorreabusquets
Copy link

Hola! no soy ayudante, pero tengo entendido que a continuar = True se le llama variable auxiliar. La idea que me quedó de Intro a la Progra era que el gran problema de las variables globales era que en clases o funciones uno hiciera variables cuyo nombre coincidiera con variables fuera de las clases o funciones.
Ahora, si definir variables en el main se considera uso de variable global, no tengo idea... pero si te complica, debería ser bastante fácil hacer un módulo que importe los mismos que estabas importando al main, definir esas variables ahí, y luego importarlas desde ese módulo al main. Un importception 😉 Ojalá alguien con más autoridad pueda confirmar.
Saludos y éxito 😄

@jeschuwirth jeschuwirth self-assigned this Apr 13, 2020
@jeschuwirth
Copy link
Contributor

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:

def funcion (a,b):
    c = a+b
    return c
continuar = True
while (continuar):
    numero = 5
    numero2 = 7
    print(funcion(numero + numero2))
    continuar = False

Las variables continuar, numero y numero2 son todas globales, solo aquellas variables dentro de la función (a,b y c) serían variables locales.

debería ser bastante fácil hacer un módulo que importe los mismos que estabas importando al main, definir esas variables ahí, y luego importarlas desde ese módulo al main.

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 parametros.py

Ten en cuenta que para el ejemplo anterior no puedes agregar el "parámetro" continuar a tu archivo de parametros y luego usarlo como variable global, ya que ese no sería un parametro válido.

Un modo de evitar este problema es meter el código base dentro de una función y hacer, por ejemplo, lo siguiente:

def funcion (a,b):
    c = a+b
    return c


def run():
    continuar = True
    while (continuar):
         numero = 5
         numero2 = 7
         print(funcion(numero + numero2))
         continuar = False
run()

Espero haya quedado claro :), cualquier duda sigan comentando en la issue

Éxito!

@jeschuwirth jeschuwirth added the contenidos Issues relacionadas con los contenidos del curso label Apr 13, 2020
@jeschuwirth jeschuwirth changed the title Variables globales Que es una variables globales Apr 13, 2020
@jeschuwirth jeschuwirth changed the title Que es una variables globales Que es una variable global Apr 13, 2020
@jeschuwirth jeschuwirth changed the title Que es una variable global Qué es una variable global? Apr 13, 2020
@sofiacorreabusquets
Copy link

Chuta! creo que tengo mucho código que reestructurar 😅 muchas gracias @jeschuwirth, te pasaste

@sofiacorreabusquets
Copy link

¿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?

@jeschuwirth
Copy link
Contributor

@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

@sofiacorreabusquets
Copy link

sofiacorreabusquets commented Apr 13, 2020 via email

@jeschuwirth
Copy link
Contributor

jeschuwirth commented Apr 13, 2020

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.

@sofiacorreabusquets
Copy link

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!

@jeschuwirth
Copy link
Contributor

@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"]

@sofiacorreabusquets
Copy link

sofiacorreabusquets commented Apr 14, 2020 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
contenidos Issues relacionadas con los contenidos del curso resuelto Issues resueltas
Projects
None yet
Development

No branches or pull requests

4 participants