Wpis z mikrobloga

wallie = None

def initWallie():
----if wallie:
--------wallie.close()
----else:
--------wallie = PyWallie()

Kod zwraca błąd na ifie: "UnboundLocalError: local variable 'wallie' referenced before assignment" - dlaczego nie chwyta globalnej zmiennej, tylko myśli, że chcę nową, lokalną? Czy źle to rozumiem? #programowanie #python
  • 10
@s_theCapt: bo w funkcji stosujesz lokalną, która nie jest znana, daj parametr w metodzie lub użyj global wallie w funkcji wallie = None

def initWallie():
global wallie
----if wallie:
--------wallie.close()
----else:
--------wallie = PyWallie()
`
@hwk1988: jak dałem "global wallie; if wallie" to mam błąd "name wallie is not defined" ( ͡° ʖ̯ ͡°)
@zwei: mam klasę, ale chcę właśnie gdzieś poza mainem ją stworzyć, bo to moduł dla embedded python i tworzenie tej klasy w C++ z python.h jest bardzo skomplikowane :D
@biauek_jak_mogles: ale ja miałem assigment = None powyżej, poza jakąkolwiek funkcją...
@hwk1988: nie jest, no właśnie chcę żeby to była bezklasowa funkcja, bo do takich już zrobiłem sobie dojście w c++ i nie chciałem tego zmieniać, bo działa... to powiedz mi jeszcze jak możesz, bo mam kilka innych funkcji wolnych które używały tej zmiennej 'wallie' bez problemu, ale czy dla bezpieczeństwa mam dodać "global wallie" do każdej wolnej funkcji która coś z tym obiektem robi?
@s_theCapt: jak chcesz, żeby ta zmienna była zmieniana przez metody to global, a jak nie to dodaj do funkcji arguement i podczas wywoływania te zmienna dasz jako parametr, wtedy globalna będzie bez zmian, bo w metodzie będzie używana zmienna lokalna, czyli x= 10 xxx(x): x=100 return x , to x będzie 10, ale xx = xxx(x) już ci zwróci 100