私は、それらを印刷してデータを返すPythonスクリプトを持っていますが、関数は使用されていません。Python 3のスクリプトを関数に変換する
同じように動作するスクリプトから関数を作成したいが、データを出力する代わりにapp関数が返す必要がある。
私は "def myapp():"と書いてすべてのインデントを行い、スクリプトの最後の行で呼び出すこともできますが、そのためのツールがあるのでしょうか?
私は、それらを印刷してデータを返すPythonスクリプトを持っていますが、関数は使用されていません。Python 3のスクリプトを関数に変換する
同じように動作するスクリプトから関数を作成したいが、データを出力する代わりにapp関数が返す必要がある。
私は "def myapp():"と書いてすべてのインデントを行い、スクリプトの最後の行で呼び出すこともできますが、そのためのツールがあるのでしょうか?
常に 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()
は特別ではありません。
ステップ1:あなたのスクリプトの先頭に 'def myapp():'と書いてください。ステップ2:スクリプト全体をハイライト表示し、タブ|ステップ3:あなたの結果を '返す 'あなたは今、最も醜い機能を持っています、私はそれが動作することを願っています。自動ツールがうまくいくかどうかは疑問です。 – miradulo
[Pythonのスクリプトからのstdoutのキャプチャ]の可能な複製(0120-18753) –
テスト駆動開発を行うときは、次のようになります。テストコードが関数を呼び出すことができるように、最初から関数を書き込むように駆動され、実際の結果と期待通りの結果をプログラムで比較することができます。結果を視覚的に見るために、例えば 'print(f(arg))'と書いています。これは結果を*計算する*結果を*表示する*ことを分けます。 –