¿Cómo imprimir declaración crear una variables locales

Las preguntas están al final de este post.

Primer fragmento: Diccionario de variables locales vacío.

def outer():
    x = 1
    def inner():
        print "Local variables: %s" % locals()
    return inner()
print outer()

Salida: variables locales: {}

Segundo fragmento de código: Imprima la función interior () y cree una entrada de variable local.

def outer():
    x = 1
    def inner():
        print x
        print "Local variables: %s" % locals()
    return inner()
print outer()

Salida:

1
Local variables: {'x': 1}

Tercer Fragmento: del x desde dentro de la función interna:

def outer():
    x = 1
    def inner():
        print x
        print "Local variables: %s" % locals()
        del x
    return inner()
print outer()

Salida:

>>> outer()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 7, in outer
  File "<stdin>", line 4, in inner
UnboundLocalError: local variable 'x' referenced before assignment
>>>

Preguntas:

En Second Snippet, cómo la declaración de impresión crea una variable local.Si crea una variable local dentro de la función interna, no puedo borrarla.

¿Podría alguien ayudarme por favor a entender esto?

Respuestas a la pregunta(3)

Su respuesta a la pregunta