1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        一個簡單的步驟讓你的 Python 代碼更干凈

        共 3245字,需瀏覽 7分鐘

         ·

        2022-11-03 23:15

        說起來容易做起來難,我們都知道代碼可讀性非常重要,但是寫的時候總是隨心所欲,不考慮類型提示、import 排序、PEP8 規(guī)范。今天分享一個小技巧,通過一個簡單的步驟就可以讓你的 Python 代碼更干凈。

        這就是 pre-commit:

        可以讓你的代碼提交之前自動檢查是否符合你想要的規(guī)范。

        使用之前,先 pip 安裝一下:

        pip install pre-commit

        然后在項目的根目錄下創(chuàng)建兩個文件:.pre-commit-config.yaml 和 pyproject.toml。

        .pre-commit-config.yaml 文件內(nèi)容如下:

        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 等工具,id 就是對應(yīng)的工具,可以說這個配置文件基本上就夠用了。

        在 .pre-commit-config.yaml 文件中,我們可以指定將使用哪些掛鉤,在 pyproject.toml 中,我們可以為這些單獨的鉤子指定參數(shù)。

        pyproject.toml 文件內(nèi)容如下:

        [tool.black]
        line-length = 88
        target-version = ["py38"]

        [tool.isort]
        profile = "black"
        multi_line_output = 3

        這里配置了 black 和 isort 的相關(guān)配置。

        然后執(zhí)行在項目的根目錄執(zhí)行 pre-commit install 命令,就可以安裝 pre-commit 插件。

        然后每次更新代碼,提交代碼時,這些鉤子都會觸發(fā),會自動執(zhí)行如下操作:

        1. 排序 import
        2. PEP8 的格式代碼
        3. 檢查您的 yaml 和 json 文件的正確性
        4. 類型檢查(如果你使用了類型提示)

        最后

        你可以將這兩個文件拷貝到自己的項目根目錄中,然后執(zhí)行一次 pre-commit install,這樣每次提交代碼的時候,都是干凈的代碼,是不是很方便?

        瀏覽 56
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            日韩一区二区三区电影在线观看 | 天干夜天干天天天爽视频 | 国产日色逼黄股眼屁 | 小浪货下面小泬好湿 | 我被老头给添的直叫过程最新章节 | 国产一级内射视频 | 精品人妻一区二区免费蜜桃视频 | 啊轻点灬太粗嗯太深了男女视频 | 国产一级婬乱片AAAA | 激情八月丁香婷婷 |