Структура кода в файле
Общая структура кода в файле такова:
- Импорты
- Объявления глобальных констант
- Объявления функций
- Остальной код, собранный в блок
if __name__ == '__main__'
Каждый программист, открывающий ваш код, будет ожидать соблюдения этой структуры. Так в коде проще ориентироваться.
Пример как выглядит правильно структурированный код:
import library
import another_library
NOTIFICATION = 'this is a global constant'
def do_things():
...
print(NOTIFICATION)
if __name__ == '__main__':
bot = ...
do_things()
do_things()
do_things()
Функция main
Объявляя переменную внутри ifmain, вы делаете её глобально доступной, даже того не желая. Каждая функция сможет до неё добраться и прочитать. На изоляцию кода это влияет плохо, появляются неявные связи. Причём такое часто случается не по умыслу, а случайно, по невнимательности.
Чтобы не следить за всеми переменными код прячут внутрь функции def main()
и делают все переменные локальными. Внутри ifmain остаётся только вызов main()
:
import library
import another_library
NOTIFICATION = 'this is a global constant'
def do_things():
...
print(NOTIFICATION)
def main():
bot = ...
do_things()
text = ...
do_things()
do_things()
if __name__ == '__main__':
main()
В коде выше переменные bot
и text
доступны только внутри def main
и недоступны из def do_things
. Если тот же код записать без def main
, то переменные станут глобальными, и возрастёт риск ошибки по невнимательности.
Название функции main
– это дань глубокой традиции, перекочевавшей из других языков программирования.
Прячьте код внутрь функции def main
.