メンテナンスを容易にし、パフォーマンスを向上させ、メモリを節約するために、グローバル変数の代わりにローカル変数を使用するようにしてください。
ローカル変数を使用して、ls = os.linesep などのモジュール名前空間内の変数を置き換えます。プログラムのパフォーマンスを向上させ、ローカル変数の検索を高速化できる一方で、短い識別子を使用して長いモジュール変数を置き換えて可読性を向上させることができます。
オブジェクト タイプを判断するときは、 isinstance() を使用し、続いてオブジェクト タイプ ID (id())、オブジェクト値 ( type()) 比較は最悪です。
#判断变量num是否为整数类型 type(num) == type(0) #调用三次函数 type(num) is type(0) #身份比较 isinstance(num,(int)) #调用一次函数
繰り返し動作を避けるため、繰り返し動作の内容をパラメータとしてループ条件に入れないでください。
#每次循环都需要重新执行len(a) while i < len(a): statement #len(a)仅执行一次 m = len(a) while i < m: statement
モジュール X で関数またはオブジェクト Y を使用する必要がある場合は、import X; X.Y の代わりに from X import Y を直接使用する必要があります。このようにして、Y を使用するときに 1 つのクエリを減らすことができます (インタプリタは、最初に X モジュールを見つけてから、X モジュールの辞書で Y を検索する必要がありません)。
マッピング (dict など) の検索速度は、条件文 (if など) の検索速度よりもはるかに高速です。 )。 Python には select-case ステートメントもありません。
#if查找 if a == 1: b = 10 elif a == 2: b = 20 ... #dict查找,性能更优 d = {1:10,2:20,...} b = d[a]
シーケンス (str、リスト、タプルなど) の場合、シーケンス要素の直接反復は、インデックス付けより高速です。反復された要素。
a = [1,2,3] #迭代元素 for item in a: print(item) #迭代索引 for i in range(len(a)): print(a[i])
リスト内包表記 (リスト内包表記) はリスト全体を生成するため、大規模な反復に悪影響を及ぼします。データ量。
ジェネレータ式はそうではなく、実際にはリストを作成しませんが、必要なときに値を生成するジェネレータ (遅延計算) を返します。これはメモリに優しいです。
#计算文件f的非空字符个数 #生成器表达式 l = sum([len(word) for line in f for word in line.split()]) #列表解析 l = sum(len(word) for line in f for word in line.split())
eval() 関数と exec() 関数を使用してコードを実行する場合は、コード オブジェクト (事前にcompile()関数を渡しておく(バイトコードにコンパイルされる)ことで、strを直接呼び出す代わりに、コンパイル処理を何度も繰り返すことを避け、プログラムのパフォーマンスを向上させることができます。
正規表現パターン マッチングも同様ですが、比較と一致を実行する前に、(re.complie() 関数を使用して) 正規表現パターンを正規表現オブジェクトにコンパイルすることも最適です。
モジュール内の最上位の Python ステートメント (インデントのないコード) は、モジュールがインポートされるときに (実際に実行する必要があるかどうかに関係なく) 実行されます。 。したがって、メインプログラムに関連する関数コードも含め、モジュールのすべての関数コードを関数に配置するようにしてください。これらの関数コードは main() 関数に配置することもでき、メインプログラム自体が main() 関数を呼び出します。 。
モジュールの main() 関数にテスト コードを記述できます。メインプログラムで name の値を確認し、'main' (モジュールが直接実行されていることを示す) の場合は main() 関数を呼び出してテストを実行し、モジュール名 (モジュールが直接実行されていることを示す) の場合はテストを実行します。呼び出されている場合)、テストは実行されません。
以上がPython プログラムのパフォーマンスを向上させる 7 つの習慣の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。