Вопрос находится в конце этого сообщения.
Первый фрагмент: пустой словарь локальной переменной.
def outer():
x = 1
def inner():
print "Local variables: %s" % locals()
return inner()
print outer()
Вывод: Локальные переменные: {}
Второй фрагмент: печатать внутри функции inner() и создавать локальную переменную.
def outer():
x = 1
def inner():
print x
print "Local variables: %s" % locals()
return inner()
print outer()
Вывод:
1
Local variables: {'x': 1}
Третий фрагмент: del x внутри внутренней функции:
def outer():
x = 1
def inner():
print x
print "Local variables: %s" % locals()
del x
return inner()
print outer()
Вывод:
>>> 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
>>>
Вопросы:
- Во втором фрагменте, как оператор печати создает локальную переменную.
- Если он создает локальную переменную внутри внутренней функции, почему я не могу ее удалить.
Может кто-то, пожалуйста, помогите мне понять это.