主な機能パイソンの書き方

確かに劣らずmain()関数書かれたプログラムを学習するプロセスの各プログラマは、Pythonプログラマは例外ではありません。この記事では、Pythonのグイド・ヴァンロッサム機能推奨文言の父を共有することで、大幅にこの機能の柔軟性を向上させることができます。
一般的には、Pythonプログラマはおそらく)(メイン機能書き込み:
「」「モジュールのドキュメンテーション文字列を
ロング使い方はメッセージで述べたように機能しますので、これは
」「」
インポートSYS
インポートのgetopt
)(DEFメイン:

コマンドラインオプションの解析

try:
    opts, args = getopt.getopt(sys.argv[1:], "h", ["help"])
except getopt.error, msg:
    print msg
    print "for help use --help"
    sys.exit(2)
# process options
for o, a in opts:
    if o in ("-h", "--help"):
        print __doc__
        sys.exit(0)
# process arguments
for arg in args:
    process(arg) # process() is defined elsewhere

IF ==「メイン」:
main()の
グイドは、main()関数が自分を書く前に構造に類似していることを認めているが、書いた複雑なコマンドラインオプションは、特に必要が解決する際の柔軟性は、十分に高くありません。この目的のために、彼はあなたにいくつかの提案を前方に置きます。
オプションのパラメータARGVを追加します
:main()関数を変更し、第一に、それはインタラクティブシェルでこの関数を呼び出すサポートし、オプションのパラメータARGVをとる
DEFメイン(=なしARGV):
IFはなしARGV IS:
ARGV = SYS。 ARGV

等のgetopt()呼び出しでのargvとsys.argvのを置き換えます。

そうすることで、我々は、動的ARGVのために価値を提供するため、以下よりそれがより柔軟書くことができます:
DEFメイン(ARGV = sys.argvの):

関数を呼び出すとき、sys.argvの値は変更になる場合がありますので、これはです。オプションデフォルトパラメータはmain()関数で定義されている、計算が良いされています。
しかし、今sys.exit()関数呼び出しは、問題が発生します。場合はmain()関数の呼び出しsys.exit()、対話インタプリタを起動します!解決策は、main()関数の戻り値は終了状態(終了状態)を表すようにすることです。したがって、このコードの最後の行になり:
IF 名称が == " ":
sys.exit(メイン())
と、(n)は全てなるリターンnをsys.exitにmain()関数を呼び出します。
使用方法()例外を定義
:句の例外を除き、最後にキャプチャするさらなる改善、使用()の異常を定義することである、)(メインとすることができる機能
インポートSYS
インポートのgetopt
クラス使用(例外):
DEF INIT(自己をMSG):
self.msg MSG =
DEFメイン=なし(ARGV):
ARGVなしない場合:
ARGV = sys.argvの
試み:
トライ:
OPTS、引数=はgetopt.getopt(のargv [1]、 "H"、[ "ヘルプ「])
getopt.error除いて、MSG:
使い方を上げる(MSG)

より多くのコード、変わらず

except Usage, err:
    print >>sys.stderr, err.msg
    print >>sys.stderr, "for help use --help"
    return 2

IF ==「」:
sys.exit(メイン())
main()関数は、唯一の出口点(出口)となるように、このアプローチは、前の2つの終了点よりも良好です。補助機能の使い方に少し問題を引き起こし、AxiTraderのリベートwww.kaifx.cn/broker/axitrader.htmlが、復帰2を使用することなく、慎重な取り扱いの問題が渡された値が返さ必要があります。また、それはまた、より簡単に解析する再構成パラメータであります。
==「名でのpython メインの」役割
古典的な英語の説明:スクリプトインポート可能と実行の両方作る
中国の説明:スクリプトを直接インポートする呼び出すことができますをしても実行することができます
1を、直接実行

猫test_fun.py

デフ楽しい():
プリント(
プリント(「これは楽しいです」)
もし名前 ==「メイン『:
楽しい()
印刷(』これは、メインである」)
Pythonのtest_fun.pyの
メイン
これは楽しいです
、これはメインである
被、2调用インポート

test_funインポート
test_fun.fun()
test_fun
これは楽しいです
電話を導入するとき:出力は、ここで「メイン」が表示されていない、それは=「メイン」は次のコードが実行されていないモジュール名で、主な機能は実行されません。
また、この機能は便利です:外部モジュールは、当社のデバッグコードを実行していない場合、「名前== 『メイン』の場合」、我々はコールをさせることができ、デバッグコードは、我々はいくつかのデバッグコードを追加しますが、我々はトラブルシューティングをする場合モジュールファイルの直接実装の問題、デバッグコードが正しく実行するとき!
 Pythonはインタプリタスクリプト言語であり、C / C ++、異なる言語、C / C ++プログラム、メイン関数の最初から最後までプログラム実行Pythonのシーケンスが実行を開始します。実際にはPythonの主な機能を要約する:モジュール(機能)は、独自の別個の(デバッグ)を行うことができましょう、ミアン内部のC / C ++関数に類似している入り口を構築し、他の関数を呼び出すと等価。
一方で:私たちは、それらの実行(デバッグ)をしたいだけでは
#1:ここでは、実際のデバッグを見て(このファイルはtest.pyであると仮定して)
test.pyの
印刷(「Hello Worldの!」)
DEFのAAA():
印刷(「これはメッセージです「)からAAA機能
:DEFメイン()
このメイン関数からのメッセージである」)印刷(「
IF 名前 ==」メイン「:
メイン()
印刷(「今の名前は%%S」で
のpython test.py出力を実行します
!Hello Worldのは
、これは、main関数からのメッセージである
の名前は IS メイン
我々は、AAA機能が実行されていない定義することを確認ここでは、内側主な機能コンテンツを示す、実行されると名前 ==「メイン」:このステートメント)は(主に決意条件を実行することによって決定され、 
一方:インポート機能コマンドは、他の.pyファイル内で使用することができ、我々はcall.pyへのモジュール(機能)をtest.py、と同じフォルダに配置test.py call.py注目される;
#のcall.py
テストインポートのAAAから
AAA()
印刷(「今名前がありますS%「%
を行っPythonのcall.py出力:
!Hello Worldの
AAAからこのメッセージが関数の
の名前は ISメインの
私たちはの.pyファイルを書いたとき、あなたは内部の機能をテストするため、主な機能のエントリを構築したい機能のテストが自分の友人を書く呼び出すことができます〜

おすすめ

転載: blog.51cto.com/14511863/2437797