0

I have this code:

def sum(x):
   result = 0
   def inner(x = None):
     if x == None:
       return result
     else:
       result = result + x
       return inner
   return inner(x)

sum(10)(20)(20)()

and got this error:

Traceback (most recent call last):
  File "<stdin>", line 12, in <module>
    sum(10)(20)(20)()
  File "<stdin>", line 10, in sum
    return inner(x)
  File "<stdin>", line 8, in inner
    result = result + x
UnboundLocalError: local variable 'result' referenced before assignment

I can use global to use variable that is in global scope but how can I use the one that is in scope one level up?

if I remove the line result = result + x it return 0 so it see the variable but it can't modify it.

jcubic
  • 61,973
  • 54
  • 229
  • 402

0 Answers0