закрытие Python с присвоением внешней переменной внутри внутренней функции

Я получил этот фрагмент кода:

#!/usr/bin/env python

def get_match():
  cache=[]
  def match(v):
    if cache:
      return cache
    cache=[v]
    return cache
  return match
m = get_match()
m(1)

если я запускаю его, он говорит:

UnboundLocalError: local variable 'cache' referenced before assignment

но если я сделаю это:

#!/usr/bin/env python

def get():
  y = 1
  def m(v):
    return y + v
  return m

a=get()
a(1)

это работает.

Есть ли что-то со списком? или мой код организации не так?

Ответы на вопрос(4)

Ваш ответ на вопрос