Что означает это выход (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.