首页 > 解决方案 > `if __name__ == "__main__": ` 像习语一样有设计模式的名称吗?

问题描述

这些以下习语(编写一个也是可执行/可运行的模块)是否具有设计模式的名称?

在 Python 中,我们也可以使用if 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
}

尽管这些以不同的方式实现,但它们具有相同的目标:使单个脚本文件既是模块又是可执行/可运行的。在我看来,这是一种设计模式。你怎么称呼他们?我个人将它们称为Executable ModuleRunnable Module,但我想知道更常见的名称(如果存在)。

标签: pythonrubyperldesign-patternsidioms

解决方案


在 Perl 中,这种模式称为modulino。我相信这个词是由brian d foy在他的《Mastering Perl 》一书中创造的。我不经常看到该名称适用于 Perl 以外的语言,但它确实发生了

编辑添加:名称比这更早。这是2004 年的一篇使用该术语的文章。


推荐阅读