No, without `global` it works and even this way:
    
    
    def f():
        print(x)
    
    x = 4
    f()
    
    
    Run

But, the following doesn’t work and you have indeed to specify `global` (quite 
different from Nim here as the “equivalent” would be `var x = 2 * x + 1` which 
compiles and does the right thing):
    
    
    x = 4
    
    def f():
        x = 2 * x + 1
    
    
    Run

Python rules have their own logic, but they are not easier to understand that 
Nim ones. And for sure they are quite different as the binding is done at run 
time whereas the Nim compiler has to know at compile time what a name is 
referring to.

Reply via email to