<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          一個簡單的步驟讓你的 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
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

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

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  免费观看性感美女被操逼视频网站 | 亚洲精品视频区 | 欧美日韩在线一级黄色电影 | 日本免费三级黄色电影网站 | 六月婷婷在线 |