Python主要功能的两种变体

时间:2012-01-25 16:16:42

标签: python

在编写供个人使用的脚本时,我习惯这样做:

def do_something():
    # Do something.

if __name__ == '__main__':
    do_something()

或者,我们也可以这样做:

def do_something(): 
    # Do something.  

do_something()      # No if __name__ thingy. 

我知道在区分将脚本作为模块导入或直接调用它时,第一种形式是有用的,但对于只会执行(并且从不导入)的脚本,是否有任何理由偏好另一种?

2 个答案:

答案 0 :(得分:17)

即使脚本只是为了执行,无论如何导入它有时会很有用 - 在交互式shell中,通过文档生成工具,在单元测试中或执行计时。因此,经常使用更一般的形式永远不会受到伤害。

答案 1 :(得分:4)

第一种形式只是好习惯。编写计算机程序的一个不变的规律是,在遥远的未来(例如,在你被分配到另一个项目或退出或者对维护代码感到厌倦之后)就会想要使用你的“始终独立”脚本或部分它,出于其他目的。

如果我们假设你绝对是一个摇滚明星程序员并且你的源文件中的每个角色都充满了天才(它是,对吧?),那么其他人就会明白你的艺术作品并且是有意义的只是被你的光彩击倒在地,并希望使用它。

现在可以选择让他们将你的代码剪切并粘贴到一个名字在顶部的文件中,这非常非干,并且让你非凡的思想贡献给别人,或者你可以添加那些leetle代码并让它们导入你的模块并直接使用类或函数,使他们意识到在遇到编程之前他们对编程的了解程度非常非常小。

您的选择!