Нужна помощь в понимании закрытий Python
У меня есть этот код:
import re
def doReplace(toReplace):
i = 1
def chapterReplacer(_):
result = 'Chapter %i' % i
i += 1
return result
return re.sub('Chapter [a-zA-Z]+', chapterReplacer, test)
test = 'Chapter one Chapter Two Chapter three'
print doReplace(test)
когда я запускаю его, я получаю следующую ошибку:
Traceback (most recent call last):
File "C:/Python26/replace.py", line 13, in <module>
print doReplace(test)
File "C:/Python26/replace.py", line 10, in doReplace
return re.sub('Chapter [a-zA-Z]+', chapterReplacer, test)
File "C:\Python26\lib\re.py", line 151, in sub
return _compile(pattern, 0).sub(repl, string, count)
File "C:/Python26/replace.py", line 6, in chapterReplacer
result = 'Chapter %i' % i
UnboundLocalError: local variable 'i' referenced before assignment
У меня сложилось впечатление, что chapterReplacer перехватит локальную переменную i, но, похоже, этого не происходит?