Какова точка входа в программу Python из нескольких модулей? - PullRequest
0 голосов
/ 06 июня 2018

Я хочу понять, с какого момента запускается программа на Python.У меня есть предыдущий опыт в JavaJava каждая программа начинается с функции main() своего класса Main.Зная это, я могу определить последовательность выполнения других классов или функций других классов.Я знаю, что в Python я могу контролировать последовательность выполнения программы, используя __name__ следующим образом:

def main():
    print("This is the main routine.")

if __name__ == "__main__":
    main()

Но когда мы не используем __name__, тогда какова начальная строка моей программы Python?

1 Ответ

0 голосов
/ 25 июня 2018

Интерпретатор начинает интерпретировать файл построчно с начала.Если он встречает определение функции, он добавляет его в globals dict.Если он сталкивается с вызовом функции, он ищет его в globals dict и выполняет или не выполняет.

# foo.py
def foo():
    print "hello"
foo()

def test()
    print "test"

print "global_string"

if __name__ == "__main__":
    print "executed"
else:
    print "imported"

Выход

hello
global_string
executed
  • Интерпретатор начинает интерпретировать foo.py построчно с начала, как сначала определение функции, которое он добавляет к глобальным переменным dict, а затем он встречает вызов функции foo() и выполняет его так, что печатает hello.
  • После этого он добавляет test() к глобальному dict, но нет вызова этой функции, поэтому он не будет выполнять функцию.
  • После того, как этот оператор print выполнитсянапечатает global_string.
  • После этого, если условие будет выполнено, и в этом случае оно совпадет и напечатает executed.
...