4

これは非常に基本的な質問に違いないことはわかっていますが、SO全体で簡単な答えを見つけようとしましたが、見つけることができません。

私の質問は次のとおりです。printステートメントを表示できるように、コマンドラインからpythonスクリプトを実行するにはどうすればよいですか。

たとえば、test.py ファイルがあるとします。

def hello():
    print "hello"

インタープリターに入り、test.py をインポートしてから test.hello() を呼び出すと、すべて正常に動作します。しかし、私はただ実行できるようにしたい

python test.py

コマンドラインから「hello」を端末に出力させます。

どうすればいいですか?

ありがとう!

更新: はい、申し訳ありませんが、私のスクリプトは実際には次のようになっています。

def main():
    hello()

def hello():
    print "hello"

main() を呼び出す必要はありますか、それとも自動的に呼び出されますか?

4

4 に答える 4

9

ファイルの最後に次を追加します。

if __name__ == '__main__':
    hello()
于 2013-03-21T20:05:38.293 に答える
3

ステートメントprintは関数定義ブロックで囲まれています。関数を実行するには、関数を呼び出す必要があります。

def hello():
    print "hello"

if __name__ == '__main__':
    hello()

基本的にこれは、「このファイルがメイン ファイル (コマンド ラインから呼び出されたもの) である場合、このコードを実行する」ということです。

于 2013-03-21T20:06:43.297 に答える
2

スクリプトで実際にメソッドを呼び出す必要があります。if __name__ == "__main__":通常、これはブロックで行うことができます。

または、インタープリターへの引数を使用して-c、モジュールを cli から明示的にインポートして実行することもできますが、その場合、スクリプトが Python パス上にある必要があり、外部で Python コードを実行することになるため、スタイルも悪くなります。 Python モジュール。

于 2013-03-21T20:05:44.457 に答える
0

私が理解しているように、ファイルには次の行しかありません。

def hello():
    print "hello"

定義は正しいですが、いつ関数を「呼び出す」のですか?

ファイルには、hello()関数への呼び出しが含まれている必要があります。

def hello():
    print "hello"

hello()

このように、関数は単一のファイルで定義され、呼び出されます。

これは非常に「スクリプトのような」アプローチです...動作しますが、もっと良い方法があるはずです

于 2013-03-21T20:06:37.193 に答える