Поясните мне логику питона. Функция x1() выводит 1, а x2() вообще падает с ошибкой reference before assigment. Получается что я из вложенной функции имею только доступ на чтение к переменным «родительской» функции?
def x1():
    def y():
        z = 3
    z = 1
    y()
    print z
def x2():
    def y():
        print z
        z = 3
    z = 1
    y()
    print z
x1()
x2()









