Rubyでは、(a)実際にコードを実行することなく対話型Ruby端末にロードできるようにクラス/モジュールを書くことができます。(b)シェルスクリプト。
例えば、与えられたファイルfoo.rb
は:
class Foo
def bar
puts 'Foo bar'
end
end
if __FILE__ == $PROGRAM_NAME
foo = Foo.new
foo.bar
end
これはirb
またはpry
で使用するためにFoo
クラスをロードしますが、foo
のインスタンス化やif
文の中のメソッド呼び出しfoo.bar
では実行しないだろう終わり。
しかし、コマンドラインでruby foo.bar
を実行すると、"Foo bar"
が返され、終了します。
これに相当するPython(v2またはv3)がありますか?
は、私が(2.7に)来た最も近いがこれですが、きれいな方法があるかもしれないような気がします:
import os, sys
if os.__file__ == sys.argv[0]:
# do stuff
あなたはについて話している: '場合__name__ == "__main__": メイン() ' – Fallenreaper
しかし、' __name__ == "__main __" 'は、あなたが対話シェルにいるかどうかにかかわらずtrueですか? –
独立して実行できるファイルを作成したい場合や、ファイルがスタンドアロンで実行されている場合にデフォルトのメインを持つことができるようにスクリプトを定義する場合は、ファイルがインポートされたアイテムとして実行されている場合は、mainを実行するのではなく、代わりに 'Foo'クラスを定義するだけです。 – Fallenreaper