Cierre de Python: escribir en la variable en el ámbito primario

Tengo el siguiente código dentro de una función:

stored_blocks = {}
def replace_blocks(m):
    block = m.group(0)
    block_hash = sha1(block)
    stored_blocks[block_hash] = block
    return '{{{%s}}}' % block_hash

num_converted = 0
def convert_variables(m):
    name = m.group(1)
    num_converted += 1
    return '<%%= %s %%>' % name

fixed = MATCH_DECLARE_NEW.sub('', template)
fixed = MATCH_PYTHON_BLOCK.sub(replace_blocks, fixed)
fixed = MATCH_FORMAT.sub(convert_variables, fixed)

Agregar elementos astored_blocks&nbsp;funciona bien, pero no puedo aumentarnum_converted&nbsp;en la segunda subfunción:

UnboundLocalError: variable local 'num_converted' referenciada antes de la asignación

Podría usarglobal&nbsp;pero las variables globales son feas y realmente no necesito que esa variable sea global en absoluto.

Así que tengo curiosidad de cómo puedo escribir en una variable en el alcance de la función principal.nonlocal num_converted&nbsp;probablemente haría el trabajo, pero necesito una solución que funcione con Python 2.x.