Что означает это выход (main())

Я видел это в паре python script, который я читал в последнее время. Я посмотрел на документ; они приводят примеры только для передачи значения окончания или строки какого-то рода.

Я думаю, что это так называется основным методом, а затем выйти?

Если бы кто-то мог пролить свет на это, я был бы признателен.

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

Пожалуйста, спасибо вам

Ответы

Ответ 1

Это вызовет функцию main(), а когда основное закончится, оно перестанет выдавать системе код возврата, являющийся результатом main().

Упрощенный пример, где это может быть использовано:

def main():
    Try:
        doSomething()
        return 0
    Except:
        return 1


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

Ответ 2

Если вы выполняете непосредственно Python script, __name__ устанавливается на "__main__", но если вы import его из другого script, это не так.

Итак, в этом случае script видит, если вы выполняете его напрямую. Если это так, он вызывает функцию main() для выполнения некоторой работы и возвращает возвращаемое значение функции main() в систему через exit(). Если script импортируется из другого модуля, он не выполняет функцию main() и просто предоставляет функции и классы script для import ing script.

Это обычная идиома в Python. Он позволяет создавать сценарии, которые являются автономными программами, но также может быть import ed, не пытаясь выполнить работу, которую не хочет выполнить import ing script.

Ответ 3

Потому что если main() содержит вызов sys.exit(), он выйдет из интерпретатора.

Причиной этого является использование возвращаемого значения main() в качестве кода возврата скриптов.

Ответ 4

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

Идиома if __name__ == '__main__': является распространенным способом запуска кода только тогда, когда модуль запускается как script (в отличие от импорта).

Ответ 5

Просто добавив пример к типу скриптов, упомянутых в вопросе:

#!/usr/bin/python
# -*- coding: utf-8 -*-
import re
import sys

from youtube_dl import main

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
    sys.exit(main())

Это из пакета youtube-dl, где другая функция main импортируется из модуля youtube_dl. Обратите внимание, что это не путать с "__name__ установлено на __main__" при выполнении script непосредственно, как указал @Chris. В целом, exit(main()) может использоваться для того, чтобы выполнить script.