+ 1
UnboundLocalError
I have 2 global variables, an int g_int and a dictionary g_dict. The dictionary can be seen and modified from inside a class c constructor. The int no: if I uncomment the line inside the constructor which tries to increment g_int, I get an UnboundLocalError exception: local variable g_int referenced before assigned. Why this strange behaviour? https://code.sololearn.com/cqr9S4IMefg7/?ref=app
3 Respostas
+ 2
Cbr✔[ Not Active ]
please uncomment line 6 and you will see the error
+ 1
That is a nice bypass! But it is strange anyway.
If you "print(globals())" inside the constructor, g_int is listed with the correct value.
+ 1
Ok, now I see... With the help of your suggestion Cbr✔[ Not Active ] I searched for "global keyword" and I found the solution.
A global variable inside a function can be accessed but cannot be modified (without the "global" re-declaration).
A dictionary is a different thing: it is not modified, it is just expanded.