2016-05-17 9 views
-2

私は、それらを印刷してデータを返すPythonスクリプトを持っていますが、関数は使用されていません。Python 3のスクリプトを関数に変換する

同じように動作するスクリプトから関数を作成したいが、データを出力する代わりにapp関数が返す必要がある。

私は "def myapp():"と書いてすべてのインデントを行い、スクリプトの最後の行で呼び出すこともできますが、そのためのツールがあるのでしょうか?

+1

ステップ1:あなたのスクリプトの先頭に 'def myapp():'と書いてください。ステップ2:スクリプト全体をハイライト表示し、タブ|ステップ3:あなたの結果を '返す 'あなたは今、最も醜い機能を持っています、私はそれが動作することを願っています。自動ツールがうまくいくかどうかは疑問です。 – miradulo

+0

[Pythonのスクリプトからのstdoutのキャプチャ]の可能な複製(0120-18753) –

+1

テスト駆動開発を行うときは、次のようになります。テストコードが関数を呼び出すことができるように、最初から関数を書き込むように駆動され、実際の結果と期待通りの結果をプログラムで比較することができます。結果を視覚的に見るために、例えば 'print(f(arg))'と書いています。これは結果を*計算する*結果を*表示する*ことを分けます。 –

答えて

1

常に 2つの「マジック」行で終了する1つ以上の関数としてスクリプトを記述します。適切なテンプレートは、

import sys    # if you want a system return code 
MY_CONSTANT = "whatever" # a symbolic constant 

def a_function(args): # replace with your useful stuff 
    pass 

# def b_function(args): # as many more defs as are useful 
    # can refer to/use both a_function (above) and c_function (below) 

# def c_function() 
    # etc 

def main(): 
    print("Script starting ...") 
    # parse arguments, if any parsing needed 
    # do stuff using the functions defined above 
    # print output, if needed 
    print("End of script") 
    sys.exit(0) # 0 is Linux success, or other value for $? on exit 

# "magic" that executes script_main only if invoked as a script 

if __name__ == "__main__": # are we being invoked directly from command line? 
    main()     # if so, run this file as a script. 

なぜですか?このファイル(myfile.py)は、インタプリタ・プロンプトまたは別のファイル/スクリプト/モジュールのインポートとしても使用できます。それは定数と関数を定義しますが、以下のようにインポートすると実際には何も実行されません。どちらかなど

import myfile 

ので、あなたがmyfile.a_functionを参照することができ、myfile.MY_CONSTANT、 または

from myfile import a_function 

、その後、あなたは接頭辞を必要とせずにa_function(args)を呼び出すことができます。 testまたはいくつかのランダムな名前が表示されることがよくあります。main()は特別ではありません。

関連する問題