я не могу не удивляться ...правила неопределенные переменные и обзорных
Config:
[email protected]:~/$ python --version
Python 2.7.5+
Код:
import logging
logger = logging.getLogger('x')
def main():
print logger
logger = 2
if __name__ == "__main__":
main()
Выход:
[email protected]:~/$ python ./manager.py
Traceback (most recent call last):
File "./manager.py", line 9, in <module>
main()
File "./manager.py", line 5, in main
print logger
UnboundLocalError: local variable 'logger' referenced before assignment
Очевидно , Я бы ожидал, что заявление печати для доступа к glob измененная логическая переменная. Есть ли что-то, что я не понял о правилах определения переменных переменной python?
Кроме того, очевидно, что оператор logger = 2 не должен делать многого. Однако, если я удалю его, исключение неопределенной переменной исчезнет.
Вы назначаете имя => локальное. –
«Есть ли что-то, что я не понимал в правилах определения переменных переменной python?» Да. Вы не понимаете, что у вас могут быть локальные переменные с тем же именем, что и переменные, объявленные в глобальной области. Если вы хотите использовать переменную в глобальной области видимости, вам нужно сказать следующее: 'def main(): глобальный журнал; регистратор печати; logger = 2' – hughdbrown
Это должно быть 'global logger'. Сожалею. – hughdbrown