@WebDeveloper2016

Почему не работает main?

Так получилось что я сразу начал с django, не вникнув в азы питона. Вот сейчас хотел просто в консоли кое что потестить и понял что не знаю а есть ли тут вообще main или тут как в php надо писать прямо без функции код чтобы он сразу вызвался? Попробовал создать функцию с именем main, но она почему то не вызывается. Хотя код отрабатывает без ошибок. А еще нашел какое то есть зарезервированное слово __main__. Попробовал и с таким названием функцию создать тоже не вызывается автоматически... Так как правильно то?
  • Вопрос задан
  • 1692 просмотра
Решения вопроса 1
sim3x
@sim3x
https://www.google.com.ua/search?q=python+name+main

stackoverflow.com/questions/419163/what-does-if-na...

#f1.py
def foo(): print('bar')

def buzz(): print('buzz')

if __name__ == "__main__": 
    foo()


def foo(): print('bar')

from f1 import buzz 
buzz()
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@Fellzo
Код отрабатывает сразу же. Если есть написанный функция main её следует вызвать отдельно
def main():
    pass
main()
Ответ написан
Комментировать
@abcd0x00
Имя main в питоне не зарезервировано, просто функцию main() часто используют по аналогии с сишными программами (по этой функции видно, что делает программа и откуда всё начинается).

А ворота
if __name__ == '__main__':
нужны для того, чтобы исключить определённый код из импорта.
Каждый файл .py в питоне является модулем, его можно импортировать, как обычный модуль, и использовать содержимое из него (функции, классы и другие объекты). Но при этом и сам по себе файл что-то делает, если его запускают сам по себе. При импорте весь модуль сначала выполняется, но если тебе нужна только функция из модуля и тебе не нужно выполнять то, для чего весь этот модуль сделан, он всё равно будет выполняться весь. Поэтому в модуле ставятся ворота, которые пропускают только тогда, когда модуль запускается в виде самостоятельного файла. Когда же его импортируют, ворота не пропускают.

Зря ты начал изучение с Django, потому что там никто тебе не будет объяснять эти основы, а это реально самые основы питона.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы