ホームページ  >  記事  >  バックエンド開発  >  Python コードのインデントとテスト モジュールの例の詳細な説明

Python コードのインデントとテスト モジュールの例の詳細な説明

不言
不言オリジナル
2018-05-07 11:50:541266ブラウズ

この記事では、主に Python コードのインデントとテスト モジュールの例を詳しく紹介します。必要な友達は参考にしてください。

Python コードのインデントとこの記事では、Python コードのインデントとテスト モジュールに関する関連コンテンツを主に紹介します。以下では多くを説明しません。詳しい紹介。

1. Python コードのインデント

Python 関数には明確な begin と end がなく、関数の始まりと終わりをマークする中括弧もありません。区切り文字はコロン (:) のみで、コード自体はインデントされます。 例: インデント構築接続文字列関数

def buildConnectionString(params):
"""Build a connection string from a dictionary of parameters.
Returns string."""
return ";".join(["%s=%s" % (k, v) for k, v in params.items()])

コードブロックはインデントによって定義されます。 「コードのブロック」とは、関数、if ステートメント、for ループ、while ループなどを意味します。開始インデントはブロックの始まりを示し、インデントを解除するとブロックの終わりを示します。明らかな括弧、中括弧、キーワードはありません。これは、空白が重要であり、一貫性があることを意味します。この例では、関数コード (doc 文字列を含む) が 4 つのスペースでインデントされています。 4 である必要はありません。一貫性があれば十分です。インデントされていない最初の行は、関数本体の外側とみなされます。

例: 「if 文」は、if 文のインデントの例を示します。

def fib(n): (1)
print 'n =', n (2)
if n > 1: (3)
return n * fib(n - 1)
else: (4)
print 'end of the line'
return 1

(1) これは、パラメーター n が 1 つある fib という関数です。関数内のすべてのコードはインデントされます。

(2) Python ではコンテンツを画面に出力するのは非常に簡単で、print を使用するだけです。 print ステートメントは、文字列、整数、および辞書やリストなどの他の型を含む任意のデータ型を受け入れることができます。カンマで区切るだけで、出力を混合することもできます。すべての値はスペースで区切られて同じ行に出力されます (カンマは出力されません)。したがって、 fib を 5 で呼び出すと、「n = 5」が出力されます。

(3) if 文はコードブロックの一種です。 if 式が true と評価された場合は、次のインデントされたブロックが実行され、それ以外の場合は else ブロックが実行されます。

(4) もちろん、すべて均等にインデントされている限り、if ブロックと else ブロックには多くの行を含めることができます。この else ブロックには 2 行のコードがあります。複数行のコード ブロックに特別な構文はなく、インデントのみです。最初のいくつかの抗議と Fortran へのいくつかの嘲笑の類似の後、コードのインデントと和解し、その利点がわかり始めるでしょう。主な利点は、インデントがスタイルではなく言語要件であるため、すべての Python プログラムが似ていることです。これにより、他の人の Python コードを読んで理解することがはるかに簡単になります。

注: Python と Java: ステートメントとステートメントの分割


Python ではハード リターンを使用してステートメントを分割し、コロンとインデントを使用してコード ブロックを分割します。 C++ と Java では、ステートメントを区切るのにセミコロンを使用し、コードのブロックを区切るのに中括弧を使用します。


2. Python テスト モジュール

すべての Python モジュールはオブジェクトであり、いくつかの便利なプロパティがあります。これらのプロパティを使用すると、作成したモジュールを簡単にテストできます。 if 名を使用したトリックを次に示します。

何か新しいことを学ぶ前に、いくつかの重要な点があります。まず、if 式は括弧で囲む必要はありません。次に、if ステートメントはコロンで終わり、その後にインデントされたコードが続きます。

注: Python vs. C: 比較と代入if name == "__main__":

C と同様、Python は比較に == を使用し、代入に = を使用します。 C とは異なり、Python はインライン代入をサポートしていないため、比較を実行するときに予期しない代入が発生する可能性はありません。

では、なぜこの特別な if ステートメントがトリックなのでしょうか?モジュールはオブジェクトであり、すべてのモジュールには組み込みプロパティ name があります。モジュール名の値は、モジュールを適用する方法によって異なります。モジュールがインポートされる場合、name の値は通常、パスやファイル拡張子を除いたモジュールのファイル名になります。ただし、標準プログラムのようにモジュールを直接実行することもできます。その場合、 name の値は特別なデフォルト値 main になります。

>>> import odbchelper
>>> odbchelper.__name__
'odbchelper'

これを理解したら、モジュール内でモジュールのテスト スイートを設計し、その中にこの if ステートメントを含めることができます。モジュールを直接実行する場合、 name の値は main であるため、テスト スイートが実行されます。モジュールをインポートするとき、name の値は別の値になるため、テスト スイートは無視されます。これにより、新しいモジュールをより大きなプログラムに統合する前に、その開発とデバッグがはるかに簡単になります。

ヒント: Mac OS の if name __

MacPython では、if name トリックを機能させるには追加の手順が必要です。ウィンドウの右上隅にある黒い三角形をクリックしてモジュールのプロパティ メニューをポップアップ表示し、[メインとして実行] が選択されていることを確認します。


Python単体テストフレームワークunittestの使い方を解説

以上がPython コードのインデントとテスト モジュールの例の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。