I only just came across this and it's managed to confuse me. I tried to use the same idea as Function2 but it didn't work, what confused me was it was managing to access other global variables even though I hadn't used global at all.
It seems it depends on how you use the variable which just doesn't seem right to me.
I understand all I need to do is global number in Function2 but why is it that this doesn't work?
number = 5
def Function1():
    temp = number
    print(temp)
def Function2():
    number += 1
    print(number)
    
def Function3():
    print(number)
    
Function1() # >>>  5
Function2() #      line 8, in Function2
            #      number += 1
            #      UnboundLocalError: local variable 'number' referenced before assignment
Function3() # >>>  5
Function1 and Function3 work as I expect whereas Function2 does not.
I also tried replacing the number += 1 with number = number + 1 but same error occured.
- Python version 3.9.13
