相当于Perl Modulino for Ruby,Python?

时间:2013-04-29 21:50:02

标签: python ruby perl modulino

我知道Perl有一个名为modulino的设计模式,其中库模块文件既可以作为库也可以作为脚本。在Ruby / Python中有没有相同的东西?

我认为这种设计模式对我来说非常有用;我正在编写相当短的工作者,但也需要一个脚本来运行它们。我认为将这一切从同一个地方运行会很方便。

谢谢!

3 个答案:

答案 0 :(得分:7)

Python有__name__

class MyClass(object):
    pass

if __name__ == '__main__':
    print("This will only run if you run the script explicitly, not import it")

如果您运行python myscript.py,则print功能将运行。如果您从MyClass导入myscript,则print将不会。

答案 1 :(得分:7)

这是Ruby版本:

if __FILE__ == $PROGRAM_NAME #equivalent: if __FILE__ == $0
  puts "This is the main file running, it is not being required."
end

答案 2 :(得分:2)

Perl 6内置了此功能。如果将文件用作脚本,则定义一个名为MAIN的子例程:

 sub MAIN { ... }

MAIN的签名告诉Perl 6如何解析命令行参数。你可以有多个子,Perl 6将使用其签名匹配的那个。以下是Synopsis 6的示例:

multi MAIN (Int $i) {...}   # foo 1
multi MAIN (Rat $i) {...}   # foo 1/2
multi MAIN (Num $i) {...}   # foo 1e6
multi MAIN ($i) {...}       # foo bar