欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python?Black代碼格式化終極指南

 更新時(shí)間:2024年01月04日 09:21:36   作者:濤哥聊Python  
Black是一款自動(dòng)化的Python代碼格式化工具,旨在通過(guò)強(qiáng)制一致的代碼格式來(lái)提高代碼的可讀性和維護(hù)性,本文將深入探討B(tài)lack的使用方法、高級(jí)特性以及與其他格式化工具的比較,幫助你更好地理解并成功應(yīng)用Black在你的項(xiàng)目中

Black的背景

Black的起源和發(fā)展歷程

Black是由意大利程序員賈庫(kù)倫·瑞科(?ukasz Langa)于2018年創(chuàng)建的一款開(kāi)源Python代碼格式化工具。他的初衷是通過(guò)強(qiáng)制一致的代碼風(fēng)格來(lái)提高代碼的可讀性,減少開(kāi)發(fā)者之間關(guān)于代碼格式的爭(zhēng)論,從而使團(tuán)隊(duì)更容易協(xié)作。

在起初的幾個(gè)版本中,Black受到了一些爭(zhēng)議,因?yàn)樗捎昧艘环N非常嚴(yán)格的風(fēng)格,例如使用單引號(hào)而不是雙引號(hào),以及強(qiáng)制行長(zhǎng)限制等。然而,隨著時(shí)間的推移,Black在社區(qū)中逐漸獲得了認(rèn)可,因?yàn)樗脑O(shè)計(jì)哲學(xué)更加注重一致性和簡(jiǎn)潔。

Black的基本格式化效果

一個(gè)簡(jiǎn)單的Python函數(shù)示例演示Black的基本格式化效果:

# 未格式化的代碼
def   add (  x, y ) :
    return  x+y

運(yùn)行Black進(jìn)行格式化:

black example.py

格式化后的代碼:

# 格式化后的代碼
def add(x, y):
    return x + y

從這個(gè)簡(jiǎn)單的例子中可以看到,Black會(huì)自動(dòng)調(diào)整縮進(jìn)、添加適當(dāng)?shù)目崭?,使代碼更加一致和易讀。

安裝與配置

1. 安裝Black

首先,需要使用pip安裝Black。在終端或命令提示符中執(zhí)行以下命令:

pip install black

這將會(huì)安裝最新版本的Black。

2. 創(chuàng)建配置文件

為了定制Black的行為,可以創(chuàng)建一個(gè)名為pyproject.toml的配置文件。在項(xiàng)目根目錄下執(zhí)行以下命令:

touch pyproject.toml

3. 基本配置選項(xiàng)

pyproject.toml中,可以配置Black的一些基本選項(xiàng),例如行寬度(line-length)和目標(biāo)Python版本(target-version)。

# pyproject.toml
[tool.black]
line-length = 88
target-version = ['py38']

在這個(gè)示例中,將行寬度設(shè)置為88個(gè)字符,并指定目標(biāo)Python版本為3.8??梢愿鶕?jù)項(xiàng)目需求進(jìn)行相應(yīng)的調(diào)整。

4. 更多配置選項(xiàng)

除了基本選項(xiàng)之外,Black還提供了許多其他配置選項(xiàng),以滿足不同項(xiàng)目的需求。以下是一些示例:

exclude: 用于指定要忽略的文件或目錄。例如:

# pyproject.toml
[tool.black]
exclude = '''
/tests/
/docs/
'''

skip-string-normalization: 如果不希望對(duì)字符串進(jìn)行規(guī)范化,可以使用此選項(xiàng)。例如:

# pyproject.toml
[tool.black]
skip-string-normalization = true

use-tabs: 如果項(xiàng)目使用制表符而不是空格,請(qǐng)啟用此選項(xiàng)。例如:

# pyproject.toml
[tool.black]
use-tabs = true

5. 運(yùn)行Black

配置完成后,可以在終端中運(yùn)行Black,以格式化項(xiàng)目中的所有符合條件的Python文件。

black .

以上示例展示了如何安裝Black并配置一些基本選項(xiàng)。通過(guò)在pyproject.toml文件中添加適當(dāng)?shù)呐渲?,可以根?jù)項(xiàng)目的需求定制Black的行為。

基本用法

Black的基本用法非常簡(jiǎn)單,只需在終端或命令行中運(yùn)行Black,并指定要格式化的目標(biāo)文件或目錄。

1. 安裝Black

首先,確保已經(jīng)安裝了Black。如果沒(méi)有安裝,可以使用以下命令進(jìn)行安裝:

pip install black

2. 運(yùn)行Black

在終端中,進(jìn)入項(xiàng)目目錄,并運(yùn)行以下命令:

black .

這個(gè)命令將會(huì)格式化當(dāng)前目錄下的所有符合條件的Python文件。也可以指定具體的文件或目錄,例如:

black my_file.py my_directory/

3. 自動(dòng)遞歸

默認(rèn)情況下,Black會(huì)遞歸地格式化目錄下的所有文件。如果想要顯示哪些文件被格式化了,可以加上--check選項(xiàng),Black將只檢查格式而不進(jìn)行實(shí)際的修改。

black --check .

4. 檢查格式差異

如果想查看格式化前后的具體差異,可以使用--diff選項(xiàng):

black --diff .

這個(gè)選項(xiàng)會(huì)顯示格式化前后的差異,但并不會(huì)實(shí)際修改文件。

5. 在編輯器中使用

許多代碼編輯器都支持Black的集成,使得在編輯器中直接應(yīng)用格式化變得更加方便。例如,在VSCode中,可以安裝插件并配置以在保存文件時(shí)自動(dòng)運(yùn)行Black。

Black的特性

Black作為一款強(qiáng)大的Python代碼格式化工具,不僅提供了基本的格式化功能,還支持一些高級(jí)特性,使其更加靈活和適應(yīng)不同的項(xiàng)目需求。

1. 忽略文件和目錄

Black允許你通過(guò)配置文件來(lái)指定要忽略的文件或目錄,以便在格式化時(shí)排除特定的部分。在pyproject.toml中使用exclude選項(xiàng):

# pyproject.toml
[tool.black]
exclude = '''
/tests/
/docs/
'''

在這個(gè)例子中,Black將忽略項(xiàng)目中的/tests//docs/目錄下的文件。

2. 自定義行寬和縮進(jìn)

通過(guò)配置文件,你可以輕松地調(diào)整Black的一些格式化設(shè)置,如行寬度和縮進(jìn)。例如,將行寬度設(shè)置為120,使用制表符而不是空格:

# pyproject.toml
[tool.black]
line-length = 120
use-tabs = true

這個(gè)配置將使Black在格式化時(shí)將行寬度限制為120個(gè)字符,并使用制表符進(jìn)行縮進(jìn)。

3. 編輯器集成

Black與許多流行的代碼編輯器集成得很好。在許多編輯器中,你可以通過(guò)配置使Black在保存文件時(shí)自動(dòng)運(yùn)行。以VSCode為例,在settings.json文件中添加以下配置:

// settings.json
"editor.formatOnSave": true,
"python.formatting.provider": "black"

這樣配置后,每次保存Python文件時(shí),Black都會(huì)自動(dòng)格式化代碼。

4. 額外的命令行選項(xiàng)

除了配置文件之外,Black還提供了一些命令行選項(xiàng),允許你在運(yùn)行時(shí)覆蓋特定的設(shè)置。例如,你可以使用--check選項(xiàng)來(lái)檢查代碼是否符合Black的格式,而不進(jìn)行實(shí)際的格式化。

black --check .

5. 在版本控制中使用

Black的格式化輸出通常會(huì)修改文件,因此在版本控制中使用時(shí)需要小心。你可以使用--diff選項(xiàng)來(lái)查看格式化前后的差異,而不實(shí)際修改文件:

black --diff .

這能夠在提交代碼之前檢查潛在的更改。

通過(guò)深入了解Black的高級(jí)特性,你可以更好地定制工具以適應(yīng)你的項(xiàng)目需求。這些特性使Black成為一個(gè)強(qiáng)大而靈活的代碼格式化工具,適用于各種Python項(xiàng)目。

Black與其他格式化工具的比較

Black、YAPF和autopep8都是Python代碼格式化工具,它們各自有著獨(dú)特的設(shè)計(jì)理念和特點(diǎn)。以下是它們之間的一些比較:

1. 設(shè)計(jì)理念

Black: Black的設(shè)計(jì)理念強(qiáng)調(diào)一致性和簡(jiǎn)潔。它采用了一種“不容商量”的方式,通過(guò)強(qiáng)制一種固定的代碼風(fēng)格來(lái)減少開(kāi)發(fā)者之間的爭(zhēng)論,確保整個(gè)項(xiàng)目的代碼具有一致性。

YAPF: YAPF(Yet Another Python Formatter)也注重一致性,但相對(duì)于Black,它提供了更多的配置選項(xiàng),允許用戶根據(jù)自己的偏好調(diào)整格式化的細(xì)節(jié)。

autopep8: autopep8的目標(biāo)是自動(dòng)修復(fù)PEP 8規(guī)范中的問(wèn)題。它側(cè)重于通過(guò)調(diào)整空格、縮進(jìn)等方式來(lái)使代碼符合PEP 8標(biāo)準(zhǔn),但并不強(qiáng)制一種特定的風(fēng)格。

2. 配置選項(xiàng)

Black: Black的配置選項(xiàng)相對(duì)較少。它更傾向于采用一組默認(rèn)的風(fēng)格規(guī)則,以簡(jiǎn)化配置,并鼓勵(lì)項(xiàng)目中所有的代碼都采用相同的風(fēng)格。

YAPF: YAPF提供了大量的配置選項(xiàng),使用戶可以精細(xì)調(diào)整格式化的行為。這使得YAPF更加適用于那些需要高度定制的項(xiàng)目。

autopep8: autopep8也提供了一些配置選項(xiàng),允許用戶在一定程度上調(diào)整格式化規(guī)則,但相較于YAPF,它的配置相對(duì)簡(jiǎn)單。

3. 自動(dòng)化程度

Black: Black的自動(dòng)化程度非常高。它幾乎沒(méi)有人為干預(yù)的余地,通過(guò)運(yùn)行一次命令即可完成整個(gè)項(xiàng)目的代碼格式化。

YAPF: YAPF在自動(dòng)化程度上也很高,但相對(duì)于Black,它提供了更多的配置選項(xiàng),使用戶可以更靈活地調(diào)整代碼風(fēng)格。

autopep8: autopep8的自動(dòng)化程度較高,但用戶在使用時(shí)仍有一定的控制權(quán),可以選擇性地應(yīng)用或忽略某些修復(fù)。

4. 速度

Black: Black在速度上通常較快,尤其是對(duì)于大型項(xiàng)目。它通過(guò)強(qiáng)制一致的規(guī)則來(lái)提高處理速度。

YAPF: YAPF的速度也較快,但由于提供了更多的配置選項(xiàng),可能在處理復(fù)雜格式時(shí)稍顯耗時(shí)。

autopep8: autopep8通常也能夠快速處理格式化,但在處理復(fù)雜代碼時(shí)可能略顯緩慢。

5. 社區(qū)支持與活躍度

Black: Black在Python社區(qū)中逐漸獲得了廣泛的認(rèn)可,得到了許多項(xiàng)目的采用,并且其開(kāi)發(fā)仍然非?;钴S。

YAPF: YAPF同樣受到了較多項(xiàng)目的青睞,具有一定的社區(qū)支持和活躍度。

autopep8: autopep8作為一個(gè)解決PEP 8規(guī)范的工具,也得到了廣泛的應(yīng)用,但在一些新項(xiàng)目中可能受到Black和YAPF的競(jìng)爭(zhēng)。

總結(jié)

Black作為一款Python代碼格式化工具,在項(xiàng)目中有其獨(dú)特的優(yōu)勢(shì)。其設(shè)計(jì)理念注重一致性和簡(jiǎn)潔,通過(guò)強(qiáng)制一種規(guī)范的代碼風(fēng)格,減少了開(kāi)發(fā)者間的爭(zhēng)議,提高了整體代碼的可讀性。Black的自動(dòng)化程度極高,簡(jiǎn)單的命令即可完成整個(gè)項(xiàng)目的代碼格式化,使得團(tuán)隊(duì)能夠更輕松地維持一致的代碼規(guī)范。

相較于其他格式化工具如YAPF和autopep8,Black在速度上表現(xiàn)出色,特別適合處理大型項(xiàng)目。盡管配置選項(xiàng)相對(duì)較少,但這也有助于項(xiàng)目?jī)?nèi)部的一致性。Black在Python社區(qū)中得到廣泛認(rèn)可,越來(lái)越多的項(xiàng)目采用它作為首選格式化工具。然而,對(duì)于一些需要更多定制選項(xiàng)的項(xiàng)目,YAPF和autopep8可能更為適用。

在選擇格式化工具時(shí),團(tuán)隊(duì)?wèi)?yīng)權(quán)衡工具的自動(dòng)化程度、靈活性以及與項(xiàng)目需求的契合度。Black的簡(jiǎn)潔和高效使其成為許多團(tuán)隊(duì)的選擇,為項(xiàng)目提供了一致的、易讀的代碼風(fēng)格。

以上就是Python Black代碼格式化終極指南的詳細(xì)內(nèi)容,更多關(guān)于Python Black代碼格式化的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python selenium xpath定位操作

    python selenium xpath定位操作

    這篇文章主要介紹了python selenium xpath定位操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-09-09
  • Python實(shí)現(xiàn)兩組數(shù)據(jù)縱向排序

    Python實(shí)現(xiàn)兩組數(shù)據(jù)縱向排序

    在數(shù)據(jù)分析和處理過(guò)程中,排序是一項(xiàng)非常常見(jiàn)的操作,本文將詳細(xì)講解如何使用Python實(shí)現(xiàn)兩組數(shù)據(jù)的縱向排序,并提供完整的開(kāi)發(fā)思路和代碼示例,需要的可以參考下
    2024-12-12
  • Python如何用str.format()批量生成網(wǎng)址(豆瓣讀書(shū)為例)

    Python如何用str.format()批量生成網(wǎng)址(豆瓣讀書(shū)為例)

    這篇文章主要介紹了Python如何用str.format()批量生成網(wǎng)址(豆瓣讀書(shū)為例),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Python打包后的exe還原成.py的實(shí)現(xiàn)步驟

    Python打包后的exe還原成.py的實(shí)現(xiàn)步驟

    本文主要介紹了Python打包后的exe還原成.py的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • 簡(jiǎn)單談?wù)凱ython的pycurl模塊

    簡(jiǎn)單談?wù)凱ython的pycurl模塊

    PycURl是一個(gè)C語(yǔ)言寫(xiě)的libcurl的python綁定庫(kù)。libcurl 是一個(gè)自由的,并且容易使用的用在客戶端的 URL 傳輸庫(kù)。它的功能很強(qiáng)大,PycURL 是一個(gè)非常快速(參考多并發(fā)操作)和豐富完整特性的,但是有點(diǎn)復(fù)雜的接口。
    2018-04-04
  • 利用Python監(jiān)控設(shè)備電池電量并發(fā)送通知

    利用Python監(jiān)控設(shè)備電池電量并發(fā)送通知

    在日常使用電子設(shè)備時(shí),及時(shí)了解電池電量狀態(tài)并進(jìn)行合理充電是非常重要的,本文將使用Python進(jìn)行設(shè)備電池電量的監(jiān)控并發(fā)送通知,有需要的可以了解下
    2025-03-03
  • python使用tesseract實(shí)現(xiàn)字符識(shí)別功能

    python使用tesseract實(shí)現(xiàn)字符識(shí)別功能

    Tesseract 是一個(gè)開(kāi)源的光學(xué)字符識(shí)別(OCR)引擎,它能夠識(shí)別多種語(yǔ)言的文本,可將掃描文檔、圖像中的文字提取并轉(zhuǎn)換為計(jì)算機(jī)可編輯的文本格式,本文給大家介紹了python使用tesseract實(shí)現(xiàn)字符識(shí)別功能,需要的朋友可以參考下
    2024-10-10
  • 詳解Python中如何將數(shù)據(jù)存儲(chǔ)為json格式的文件

    詳解Python中如何將數(shù)據(jù)存儲(chǔ)為json格式的文件

    這篇文章主要介紹了詳解Python中如何將數(shù)據(jù)存儲(chǔ)為json格式的文件,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Python每天必學(xué)之bytes字節(jié)

    Python每天必學(xué)之bytes字節(jié)

    Python每天必學(xué)之bytes字節(jié),針對(duì)Python中的bytes字節(jié)進(jìn)行學(xué)習(xí)理解,感興趣的小伙伴們可以參考一下
    2016-01-01
  • 基于python 爬蟲(chóng)爬到含空格的url的處理方法

    基于python 爬蟲(chóng)爬到含空格的url的處理方法

    今天小編就為大家分享一篇基于python 爬蟲(chóng)爬到含空格的url的處理方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05

最新評(píng)論