目次
1. ローカル変数を使用する
2. 関数呼び出しの数を減らす
3. 条件検索の代わりにマッピングを使用する
4. シーケンス要素の直接反復
5. ジェネレーター式を使用してリスト内包表記を置き換えます
6. 最初にコンパイルしてから呼び出します
7. モジュール プログラミングの習慣
ホームページ バックエンド開発 Python チュートリアル Python プログラムのパフォーマンスを向上させる 7 つの習慣

Python プログラムのパフォーマンスを向上させる 7 つの習慣

Apr 16, 2023 pm 06:01 PM
python プログラムのパフォーマンス

Python プログラムのパフォーマンスを向上させる 7 つの習慣

1. ローカル変数を使用する

メンテナンスを容易にし、パフォーマンスを向上させ、メモリを節約するために、グローバル変数の代わりにローカル変数を使用するようにしてください。

ローカル変数を使用して、ls = os.linesep などのモジュール名前空間内の変数を置き換えます。プログラムのパフォーマンスを向上させ、ローカル変数の検索を高速化できる一方で、短い識別子を使用して長いモジュール変数を置き換えて可読性を向上させることができます。

2. 関数呼び出しの数を減らす

オブジェクト タイプを判断するときは、 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 を検索する必要がありません)。

3. 条件検索の代わりにマッピングを使用する

マッピング (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]
ログイン後にコピー

4. シーケンス要素の直接反復

シーケンス (str、リスト、タプルなど) の場合、シーケンス要素の直接反復は、インデックス付けより高速です。反復された要素。

a = [1,2,3]
#迭代元素
for item in a:
print(item)
#迭代索引
for i in range(len(a)):
 print(a[i])
ログイン後にコピー

5. ジェネレーター式を使用してリスト内包表記を置き換えます

リスト内包表記 (リスト内包表記) はリスト全体を生成するため、大規模な反復に悪影響を及ぼします。データ量。

ジェネレータ式はそうではなく、実際にはリストを作成しませんが、必要なときに値を生成するジェネレータ (遅延計算) を返します。これはメモリに優しいです。

#计算文件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())
ログイン後にコピー

6. 最初にコンパイルしてから呼び出します

eval() 関数と exec() 関数を使用してコードを実行する場合は、コード オブジェクト (事前にcompile()関数を渡しておく(バイトコードにコンパイルされる)ことで、strを直接呼び出す代わりに、コンパイル処理を何度も繰り返すことを避け、プログラムのパフォーマンスを向上させることができます。

正規表現パターン マッチングも同様ですが、比較と一致を実行する前に、(re.complie() 関数を使用して) 正規表現パターンを正規表現オブジェクトにコンパイルすることも最適です。

7. モジュール プログラミングの習慣

モジュール内の最上位の Python ステートメント (インデントのないコード) は、モジュールがインポートされるときに (実際に実行する必要があるかどうかに関係なく) 実行されます。 。したがって、メインプログラムに関連する関数コードも含め、モジュールのすべての関数コードを関数に配置するようにしてください。これらの関数コードは main() 関数に配置することもでき、メインプログラム自体が main() 関数を呼び出します。 。

モジュールの main() 関数にテスト コードを記述できます。メインプログラムで name の値を確認し、'main' (モジュールが直接実行されていることを示す) の場合は main() 関数を呼び出してテストを実行し、モジュール名 (モジュールが直接実行されていることを示す) の場合はテストを実行します。呼び出されている場合)、テストは実行されません。

以上がPython プログラムのパフォーマンスを向上させる 7 つの習慣の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Deepseek Xiaomiをダウンロードする方法 Deepseek Xiaomiをダウンロードする方法 Feb 19, 2025 pm 05:27 PM

Deepseek Xiaomiをダウンロードする方法

テンプレートのメリットとデメリットは何ですか? テンプレートのメリットとデメリットは何ですか? May 08, 2024 pm 03:51 PM

テンプレートのメリットとデメリットは何ですか?

Google AI、開発者向けに Gemini 1.5 Pro と Gemma 2 を発表 Google AI、開発者向けに Gemini 1.5 Pro と Gemma 2 を発表 Jul 01, 2024 am 07:22 AM

Google AI、開発者向けに Gemini 1.5 Pro と Gemma 2 を発表

わずか 250 ドルで、Hugging Face のテクニカル ディレクターが Llama 3 を段階的に微調整する方法を教えます わずか 250 ドルで、Hugging Face のテクニカル ディレクターが Llama 3 を段階的に微調整する方法を教えます May 06, 2024 pm 03:52 PM

わずか 250 ドルで、Hugging Face のテクニカル ディレクターが Llama 3 を段階的に微調整する方法を教えます

golang 関数のデバッグと分析の完全ガイド golang 関数のデバッグと分析の完全ガイド May 06, 2024 pm 02:00 PM

golang 関数のデバッグと分析の完全ガイド

いくつかの .NET オープンソース AI および LLM 関連プロジェクト フレームワークを共有する いくつかの .NET オープンソース AI および LLM 関連プロジェクト フレームワークを共有する May 06, 2024 pm 04:43 PM

いくつかの .NET オープンソース AI および LLM 関連プロジェクト フレームワークを共有する

どうやって彼にdeepseekに尋ねますか どうやって彼にdeepseekに尋ねますか Feb 19, 2025 pm 04:42 PM

どうやって彼にdeepseekに尋ねますか

NET40とはどのようなソフトウェアですか? NET40とはどのようなソフトウェアですか? May 10, 2024 am 01:12 AM

NET40とはどのようなソフトウェアですか?

See all articles