UnboundLocalError with Python中的闭包

时间:2014-06-16 00:00:09

标签: python closures scope

我在查找Python中的错误时遇到了麻烦,我在其他语言中没有得到支持函数式编程的错误。我有以下代码:

def call_once(func):
  called = False
  def aux(*args, **kwargs):
    if called:
      raise Exception("This function was already called.")
    else:
      called = True
      return func(*args, **kwargs)
  return aux

@call_once
def add(x, y):
  return x + y

但是,如果我有:

add(1, 2)

我明白了:

UnboundLocalError: local variable 'called' referenced before assignment

这里发生了什么?

0 个答案:

没有答案