ホームページ >バックエンド開発 >Python チュートリアル >Python コードをクリーンにするための 1 つの簡単なステップ
言うは易く行うは難し コードの可読性が非常に重要であることは誰もが知っていますが、私たちは常に、型ヒント、インポートの並べ替え、PEP8 の仕様を考慮せずに、好きなように記述しています。今日は、たった 1 つの簡単なステップで Python コードをクリーンにするちょっとしたトリックを紹介します。
これは事前コミットです:
これにより、コードが送信する前に必要な仕様を満たしているかどうかを自動的にチェックできます。
使用する前に、pip を使用してインストールします:
pip install pre-commit
次に、プロジェクトのルート ディレクトリに 2 つのファイル (.pre-commit-config.yaml と pyproject.toml) を作成します。
.pre-commit-config.yaml ファイルの内容は次のとおりです:
exclude: _pb2.py$ repos: - repo: https://github.com/psf/black rev: 22.3.0 hooks: - id: black args: [--skip-string-normalization] - repo: https://github.com/pre-commit/pre-commit-hooks rev: v4.0.1 hooks: - id: check-docstring-first - id: check-json - id: check-merge-conflict - id: check-yaml - id: debug-statements - id: end-of-file-fixer - id: trailing-whitespace - id: requirements-txt-fixer - repo: https://github.com/pre-commit/pygrep-hooks rev: v1.9.0 hooks: - id: python-check-mock-methods - id: python-use-type-annotations - repo: https://github.com/pre-commit/mirrors-mypy rev: "v0.910" hooks: - id: mypy args: [ --ignore-missing-imports, --warn-no-return, --warn-redundant-casts, --disallow-incomplete-defs, ] additional_dependencies: [types-all] - repo: https://github.com/PyCQA/isort rev: 5.9.3 hooks: - id: isort args: [--profile, black, --filter-files]
これには、black、mypy、check-docstring-first、isort およびその他のツールが含まれています。基本的にはこの設定ファイルだけで十分です。
.pre-commit-config.yaml ファイルでは、使用するフックを指定でき、pyproject.toml では、これらの個々のフックのパラメーターを指定できます。
pyproject.toml ファイルの内容は次のとおりです。
[tool.black] line-length = 88 target-version = ["py38"] [tool.isort] profile = "black" multi_line_output = 3
black と isort の関連構成がここで構成されます。
次に、プロジェクトのルート ディレクトリで pre-commit install コマンドを実行して、pre-commit プラグインをインストールします。
その後、コードを更新してコードを送信するたびに、これらのフックがトリガーされ、次の操作が自動的に実行されます:
インポートのソート
PEP8 形式のコード
yaml ファイルと json ファイルが正しいかどうかを確認します
型チェック (型ヒントを使用した場合)
最後に
#これら 2 つのファイルを自分のプロジェクトのルート ディレクトリにコピーして、コミット前インストールを実行すると、コードを送信するたびにクリーンなコードが生成されます。
以上がPython コードをクリーンにするための 1 つの簡単なステップの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。