Singularity
Май 31, 2014 13:25:26
вот
тут ZZZ написал что тут все ясно, но так и не объяснил
Budulianin
Май 31, 2014 20:13:38
Singularity
С твоим кодом проще. Сначала происходит парсинг кода, потом исполнение. При парсинге в функции нашлось “a = 2”, значит в функции будет локальная переменная, при исполнении её кода. Когда код начал исполняться, то интерпретатор знал, что в функции будет локальная переменная, но на этой строчке “print a” она ещё не была определена.
Думаю, что здесь такая логика.
Singularity
Май 31, 2014 20:52:53
Budulianin
я все равно нифига не понял.
Похоже этот кусок кода что парсит функцию (про который ты написал) работает и с классами, но берет переменные не в области на уровень выше, а просто в глобальном.
Думаю в питоне нельзя писать декларацию в классах или функциях.
Budulianin
Май 31, 2014 21:04:47
Singularity
Я написал про твой код, к нему такая логика подходит. Про пример с классом, пока не знаю.
Budulianin
Май 31, 2014 21:14:29
Singularity
когда узнаешь?
Когда захочу в этом разобраться, пока что другим занят. Или когда прочитаю тут, не знаю что раньше будет.
Я думаю, можно посмотреть функцию через dis.dis и может быть будет понятнее, что происходит на самом деле.