prog3.py |
#!/usr/bin/env python3 print("これは常に実行される") def test(): print("関数:testを呼び出しました") if __name__ == "__main__": print("ここは単独のスクリプトとして起動された場合のみ実行する") test() |
% ./prog3.py これは常に実行される ここは単独のスクリプトとして起動された場合のみ実行する 関数:testを呼び出しました % |
コマンド・ライン引数は sys.argv で得られる。 C言語の argc はないが len(sys.argv) で分かる。 C言語では atoi(), atof() を良く使うが、 Python では int(), float() を使えば良い。
if __name__ == "__main__": argc = len(sys.argv) if argc == 1: testrungekutta() elif argc == 2: testrungekutta(float(sys.argv[1])) elif argc == 3: testrungekutta(float(sys.argv[1]), int(sys.argv[2])) |
この機能は便利だが、Jupyter notebook で実行した場合も、 __name__ == "__main__" は真になり、 sys.argv[1] は '-f', sys.argv[2] は 'なんとか.json' になるので、それに対応するようにするには一工夫が必要そう。
あまり自信のない書き直し |
if __name__ == "__main__": argc = len(sys.argv) if argc == 1: testrungekutta() elif argc == 2: testrungekutta(float(sys.argv[1])) elif (argc == 3 and sys.argv[1] != '-f'): testrungekutta(float(sys.argv[1]), int(sys.argv[2])) else: print('usage: testrungekutta(Tmax=50.0,N=1000)') |