if __name__ =='__ main__'的快捷方式:

gak*_*gak 13 python

这是否有更短的形式?

if __name__ == '__main__':
Run Code Online (Sandbox Code Playgroud)

写作非常繁琐,而且在我看来也不是很好看:)

Mat*_*tis 12

PEP299提出了这种疣的解决方案,即具有特殊的功能名称__main__.它遭到拒绝,部分原因是:

Guido宣称他不喜欢这个想法,因为它"不值得改变(在文档,用户习惯等方面)并且没有什么特别破坏."

http://www.python.org/dev/peps/pep-0299/

所以丑陋会留下来,至少和Guido的BDFL一样长.

  • BDFL不再说了!:) (3认同)

Thi*_*ter 9

基本上每个python程序员都这样做.所以简单地忍受吧.;)

除此之外,如果你的脚本总是作为一个应用程序运行而不是作为一个模块导入,你可以完全省略它 - 但你仍然鼓励你使用它,即使它不是真的有必要.

  • (对于一个实际上没有给出问题答案的答案,我被+6逗乐了.) (6认同)
  • @Gerald:看看PEP299(和我的回答),看起来我们已经坚持了这个.(对于一种非常干净的语言来说是一种耻辱,在第1天,一个新的Python程序员会接触到违反第一行"The Zen of Python"的实现细节:"美丽胜过丑陋") (3认同)

gak*_*gak 7

在提出这个问题之后,我决定为它做一个解决方案:

from automain import *  # will only import the automain decorator

@automain
def mymain():
    print 'this is our main function'
Run Code Online (Sandbox Code Playgroud)

博客文章解释了它,和代码在GitHub上,可以easy_installed:

easy_install automain
Run Code Online (Sandbox Code Playgroud)

  • 虽然绝对是一个巧妙的Python技巧,但这个模块增加的复杂性使它不那么有用.使用这个模块的代码将有任何阅读器"wtf!?",期望找到`if __name__ =='__ main __':`甚至单个导入的装饰可以说是太大的牺牲. (6认同)
  • ......这不是几乎相同的长度?以最公平的方式计算,它大约短3个字符.`from automain import*@ automain` vs`if __name__ =="__ main__":mymain()` (2认同)