Pobieranie zmiennej z funkcji

0

Cześć,
Mam problem, a mianowicie w kodzie:

a=0

def funkcja2():
    a=1

def funkcja1():
    global a
    print(a)
    funkcja2()
    print(a)

funkcja1()

chcę pobrać 'a' z funkcja2. Jako pierwsza liczba ma się wyświetlać 0, a kolejna 1. Jak to zroibić?

2

Nie znam pythona, ale pewnie musisz zrobić to dokładnie tak samo, jak w funkcja1, czyli zadeklarować, że chcesz a z globalnego scope'a.

1

Tak jak mowi przedmowca, musisz uzyc global w funkcja2.

0

name 'a' is used prior to global declaration

Próbowałem i wyskakuje ten błąd

1
a=0

def funkcja2():
    global a
    a=1

def funkcja1():
    global a
    print(a)
    funkcja2()
    print(a)

funkcja1()
>> 0
>> 1
0

Działa, bardzo dziękuję

3

Ja jeszcze dodam od siebie, że używanie globali to proszenie się o kłopoty, bo nagle pojawia się nam paskudna akcja na odległość — nie bardzo widać przepływ sterowania i zależności funkcji są bardzo mocno ukryte.

0

Nie wiem co chcesz osiągnąć, ale nie tędy droga... Może lepiej:

def fun2():
    return 1

A nie jakieś cyrki z globalami?

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