Есть ли у `if __name__ ==" __main__ ":` подобные идиомы имя шаблона проектирования? - PullRequest
0 голосов
/ 04 июля 2018

Имеют ли эти следующие идиомы (для написания модуля, который также является исполняемым / запускаемым) имя шаблона проектирования?

В Python мы также можем написать модуль как исполняемый файл с , если name == ' main ': idiom :

if __name__ == "__main__":
    main()

Подобную идиому можно найти в Ruby :

if __FILE__ == $0
  main()
end

Также тот же эффект может быть достигнут по-разному в Perl тоже:

main() unless caller;

В Tcl вы можете написать:

if {![info level] && [info script] eq $::argv0} {
    main
}

Хотя они реализованы по-разному, они преследуют одну и ту же цель: сделать один файл сценария и модулем, и исполняемым / запускаемым. Мне кажется, это шаблон дизайна. Как вы их называете? Меня лично называли Исполняемый модуль или Запускаемый модуль , но я хочу знать более распространенное имя, если оно существует.

1 Ответ

0 голосов
/ 04 июля 2018

В Perl этот шаблон известен как modulino . Я считаю, что этот термин был придуман Брайаном Д Фой в его книге Освоение Perl . Я не часто вижу имя, применяемое для языков, отличных от Perl, , но это случается .

Изменить, чтобы добавить: имя восходит раньше, чем это. Вот статья за 2004 год , в которой используется термин.

...