Разбирая программу python на функции, как сделать одну из основных функций?

Это самый большой вопрос новичков на планете, но я просто не уверен. Я написал несколько функций, которые выполняют некоторую задачу, и я хочу "главную" функцию, которая будет, например, когда я вызываю "someProgram.py", запускаю функцию1, функцию2 и завершаю. Я смутно помню что-то о " main", но я понятия не имею.

Ответ 1

Сценарии Python - это не коллекции функций, а коллекции наборов операторов - определения функций и классов - это просто утверждения, которые связывают имена с функциями или объектами класса.

Если вы разместите оператор печати в верхней или средней части вашей программы, он будет работать нормально, не будучи в какой-либо функции. Это означает, что вы можете просто поместить весь основной код в конец файла, и он будет запускаться при запуске script. Однако, если ваш script когда-либо импортируется, а не запускается напрямую, этот код также запускается. Обычно это не то, что вы хотите, поэтому вы бы хотели этого избежать.

Python предоставляет глобальную переменную __name__ для дифференциации при импортировании и запуске script - она ​​задается именем, под которым запускается script. Если импортируется script, это будет имя файла script. Если он запущен напрямую, это будет "__main__". Таким образом, вы можете поместить if __name__ == '__main__': в нижней части своей программы, и все внутри этого блока if будет выполняться, только если script запускается напрямую.

Пример.

if __name__ == "__main__":
    the_function_I_think_of_as_main()

Ответ 2

Когда модуль python импортируется в первый раз, его основной блок запускается. Вы можете отличить себя от запуска и импортировать в другую программу:

if __name__ == "__main__":
    function1()
    function2()
else:
    # loaded from another module

Ответ 3

if __name__ == '__main__':
  run_main()

Ответ 5

Когда я прочитаю ваш вопрос, вы спрашиваете, как определить основную функцию. Это действительно было бы сделано с чем-то вроде:

def main():
    function1()
    function2()
    return 0

И тогда вы поставили бы что-то вроде этого вне всех ваших основных функций:

if __name__ == "__main__":
    sys.exit(main())

(Конечно, вам нужно импортировать sys где-то, чтобы выше работало.)

A (теперь старый, но по-прежнему актуальный) сообщение из Guido рассказывает больше.