在Ruby中,您可以編寫一個類/模塊,使其可以(a)加載到交互式Ruby終端中,而無需實際執行代碼,或者(b)一個shell腳本。
例如,給定文件foo.rb
:
class Foo
def bar
puts 'Foo bar'
end
end
if __FILE__ == $PROGRAM_NAME
foo = Foo.new
foo.bar
end
這將加載Foo
類用於irb
或pry
,但不會執行的foo
實例化或在方法調用foo.bar
的if
語句中結束。
但是,如果在命令行運行ruby foo.bar
它將返回"Foo bar"
並退出。
是否有Python(v2或v3)等價於此?
我來最接近(2.7)是這樣的,但我覺得有可能是一個更清潔的方式:
import os, sys
if os.__file__ == sys.argv[0]:
# do stuff
你說的是:'如果__name__ == 「__main__」: 的main() ' – Fallenreaper
但是'__name__ ==「__main __」'是真的,不管你是否在交互式shell中,不是嗎? –
如果您想要創建一個可以獨立運行的文件,並定義添加的腳本,如果該文件獨立運行,可以讓您擁有默認的主文件夾。如果該文件作爲導入的項目運行,它將不會運行main,而只是在您的案例中定義類Foo' – Fallenreaper