Globalna zmienna ustawiana w main()

0

Stworzyłem plik o rozszerzeniu .py taki o:

import sys

def foo():
    print(GLOBAL_VAR)

def main():
    GLOBAL_VAR = "Wolnosc kocham i rozumiem. Wolnosci oddac nie umiem."
    foo()

main()

odpaliłem z shella i interpreter nie widzi zmiennej GLOBAL_VAR

Spróbowałem też tak:

def main():
    global GLOBAL_VAR    
    GLOBAL_VAR = "Wolnosc kocham i rozumiem. Wolnosci oddac nie umiem."
    foo()

też nie pomogło...

1

Taki kod u Ciebie nie działa?

import sys

def foo():
    print(GLOBAL_VAR)

def main():
    global GLOBAL_VAR
    GLOBAL_VAR = "Wolnosc kocham i rozumiem. Wolnosci oddac nie umiem."
    foo()

main()

Jaki komunikat otrzymujesz? Której wersji Pythona używasz?

2

Zamiast używania globalnych zmiennych, polecam zagłębić się w OOP (Object-Oriented-Programming). Wszystko co byś sobie nie wymyślił do zrobienia z globalnymi zmiennymi, można zrobić lepiej i czytelniej dzięki odpowiedniej klasie :)

Zaś odpowiadając na problem, i nie zważając na wszelkie za/przeciw:

#Metoda 1
import sys
GLOBAL_VAR = None
def foo():
    print(GLOBAL_VAR)

def main():
    global GLOBAL_VAR
    GLOBAL_VAR = "Wolnosc kocham i rozumiem. Wolnosci oddac nie umiem."
    foo()

main()
#Metoda 2
import sys

def foo():
    global GLOBAL_VAR
    print(GLOBAL_VAR)

def main():
    global GLOBAL_VAR
    GLOBAL_VAR = "Wolnosc kocham i rozumiem. Wolnosci oddac nie umiem."
    foo()

main()
#Metoda 3
import sys
GLOBAL_VAR = "Wolnosc kocham i rozumiem. Wolnosci oddac nie umiem."

def foo():
    print(GLOBAL_VAR)

def main():
    global GLOBAL_VAR #~ To tylko jeśli chcesz ją tutaj zmodyfikować 
    foo()

main()

Z połączenia tych metod też powstają jeszcze pośrednie. Żadnej nie polecam!

Może napisz nam jaki jest twój problem w większej skali, wtedy coś będziemy w stanie doradzić sensownego :).

0

OK zadziałało mi - nie wiem co ja wyprawiałem, że wcześniej nie działało... może gdzieś spację wcisnąłem o 1 za dużo, bo programuję w notatniku.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0