RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Yapf:一個(gè)格式化 Python 代碼的好幫手

科技綠洲 ? 來(lái)源:Python實(shí)用寶典 ? 作者:Python實(shí)用寶典 ? 2023-10-17 11:08 ? 次閱讀

大部分人使用Python中的代碼格式化工具時(shí)都會(huì)選擇autopep8之類的工具,這些工具可能有一定的局限性,比如不會(huì)重新格式化已經(jīng)符合 PEP8 的代碼。

而本文即將介紹的 Yapf,不僅能將代碼格式化為符合 PEP8 代碼指南的格式,還能格式化為符合 Google 代碼指南的格式,可選項(xiàng)更多,讓你的代碼更加漂亮。

1.準(zhǔn)備

開(kāi)始之前,你要確保Python和pip已經(jīng)成功安裝在電腦上,如果沒(méi)有,可以訪問(wèn)這篇文章:超詳細(xì)Python安裝指南 進(jìn)行安裝。

**(可選1) **如果你用Python的目的是數(shù)據(jù)分析,可以直接安裝Anaconda:Python數(shù)據(jù)分析與挖掘好幫手—Anaconda,它內(nèi)置了Python和pip.

**(可選2) **此外,推薦大家用VSCode編輯器,它有許多的優(yōu)點(diǎn):Python 編程的最好搭檔—VSCode 詳細(xì)指南。

請(qǐng)選擇以下任一種方式輸入命令安裝依賴

  1. Windows 環(huán)境 打開(kāi) Cmd (開(kāi)始-運(yùn)行-CMD)。
  2. MacOS 環(huán)境 打開(kāi) Terminal (command+空格輸入Terminal)。
  3. 如果你用的是 VSCode編輯器 或 Pycharm,可以直接使用界面下方的Terminal.
pip install yapf

YAPF 支持 Python 2.7 和 3.6.4+。

2.Yapf 使用方法

你可以在命令行中直接使用 Yapf, 參數(shù)如下:

yapf [-h] [-v] [-d | -i | -q] [-r | -l START-END] [-e PATTERN]
            [--style STYLE] [--style-help] [--no-local-style] [-p]
            [-vv]
            [files ...]

必選參數(shù):

files 需要被格式化的文件

可選參數(shù):
-h, --help 顯示幫助信息
-v, --version 顯示程序的版本號(hào)
-d, --diff 打印格式化前后差異
-i, --in-place 格式化文件并替換
-q, --quiet 什么都不輸出
-r, --recursive 在目錄上遞歸運(yùn)行
-l START-END, --lines START-END 重新格式化的行范圍,基于一個(gè)
-e PATTERN, --exclude PATTERN 需要排除的文件
--style STYLE 指定格式化樣式(例如“pep8”或“google”)
-p, --parallel 并行格式化(多個(gè)文件時(shí)有效)
-vv, --verbose 在處理時(shí)打印出文件名

舉個(gè)例子,如果我們有以下的混亂格式代碼 1.py :

x = { 'a':37,'b':42,

'c':927}

y = 'hello ''world'
z = 'hello '+'world'
a = 'hello {}'.format('world')
class foo  ( object ):
  def f    (self ):
    return       37*-+2
  def g(self, x,y=42):
      return y
def f  ( a ) :
  return      37+-+a[42-x : y**3]

為了格式化它,我們可以在命令行中執(zhí)行以下命令:

yapf -i 1.py

效果如下:

圖片

3.Yapf 作為模塊使用

Yapf 不僅可以在命令行中使用,我們還可以在項(xiàng)目運(yùn)行時(shí)使用。

一個(gè)比較常見(jiàn)的場(chǎng)景是用戶在你的web網(wǎng)站上提交了python代碼,你希望能一件格式化這些代碼,那將yapf作為格式化的模塊則再好不過(guò)。

Yapf 最主要的兩個(gè) API 是 FormatCode 和 FormatFile:

from yapf.yapflib.yapf_api import FormatCode

formatted_code, changed = FormatCode("f ( a = 1, b = 2 )")
print(formatted_code)
# 'f(a=1, b=2)n'
print(changed)
# True

你還可以傳遞 style_config 決定使用哪種指南做格式化:

from yapf.yapflib.yapf_api import FormatCode

print(FormatCode("def g():n return True", style_config='pep8')[0])
# 'def g():n return Truen'

FormatFile,這個(gè)函數(shù)可以從文件中讀取代碼并格式化:

from yapf.yapflib.yapf_api import FormatFile
print(open("foo.py").read())
# a==b
reformatted_code, encoding, changed = FormatFile("foo.py")
print(formatted_code)
# 'a == bn'
print(encoding)
# 'utf-8'
print(changed)
# True

如果你添加in_place參數(shù),它將把格式化后的代碼寫(xiě)回文件中:

from yapf.yapflib.yapf_api import FormatFile
print(FormatFile("foo.py", in_place=True)[:2])
# (None, 'utf-8')

print(open("foo.py").read())
# a == b
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 格式化
    +關(guān)注

    關(guān)注

    2

    文章

    39

    瀏覽量

    9112
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4779

    瀏覽量

    68520
  • 編輯器
    +關(guān)注

    關(guān)注

    1

    文章

    805

    瀏覽量

    31163
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4792

    瀏覽量

    84626
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    MDK使用AStyle進(jìn)行代碼自動(dòng)格式化

    MDK使用AStyle進(jìn)行代碼自動(dòng)格式化
    的頭像 發(fā)表于 09-19 14:22 ?3338次閱讀
    MDK使用AStyle進(jìn)行<b class='flag-5'>代碼</b>自動(dòng)<b class='flag-5'>格式化</b>

    2.6 python字符串格式化

    2.6 python字符串格式化格式化輸出,主要有三種方式使用 % 進(jìn)行格式化使用 format 函數(shù)進(jìn)行格式化使用 f-string 進(jìn)行
    發(fā)表于 02-21 16:28

    說(shuō)說(shuō)MounRiver Studio的代碼格式化

    MounRiver Studio具有代碼格式化功能,方法是右鍵選擇某個(gè)c文件,點(diǎn)擊“代碼格式化”即可。這個(gè)功能只針對(duì)某個(gè)c或h文件,鍵全工
    發(fā)表于 05-12 09:08

    格式化硬盤(pán)

    格式化硬盤(pán) 軟盤(pán)只需要格式化,硬盤(pán)卻需要兩級(jí),即低級(jí)格式化和高級(jí)格式化?! ∮脖P(pán)的低級(jí)格式化
    發(fā)表于 12-25 15:40 ?1093次閱讀

    筆記本硬盤(pán)維護(hù)之格式化

    筆記本硬盤(pán)維護(hù)之格式化篇   格式化硬盤(pán)(并非低格)會(huì)影響硬盤(pán)壽命嗎?用Windows對(duì)硬盤(pán)進(jìn)行格式化與對(duì)軟盤(pán)進(jìn)行格式化原理
    發(fā)表于 01-20 10:32 ?368次閱讀

    如何格式化硬盤(pán)

    如何格式化硬盤(pán)    這是廣大電腦初學(xué)者經(jīng)常詢問(wèn)的問(wèn)題,因?yàn)?b class='flag-5'>格式化硬盤(pán)是安裝裝系統(tǒng)的前提,所以這就成為了需要首先解決的問(wèn)題,本文將針這個(gè)
    發(fā)表于 02-24 11:25 ?465次閱讀

    CoolFormat3.2C語(yǔ)言代碼格式化工具

    CoolFormat3.2,將C語(yǔ)言代碼格式化的工具。
    發(fā)表于 05-20 17:01 ?20次下載

    格式化對(duì)硬盤(pán)有傷害嗎_硬盤(pán)格式化后數(shù)據(jù)還能恢復(fù)嗎

    普通的格式化硬盤(pán)是不會(huì)影響硬盤(pán)壽命的。硬盤(pán)格式化后數(shù)據(jù)還能恢復(fù)嗎?下面就來(lái)看看使用強(qiáng)力數(shù)據(jù)是如何將格式化后的數(shù)據(jù)給恢復(fù)的吧。
    發(fā)表于 12-14 16:09 ?1.7w次閱讀

    格式化是什么

    格式化(format)是指對(duì)磁盤(pán)或磁盤(pán)中的分區(qū)(partition)進(jìn)行初始種操作,這種操作通常會(huì)導(dǎo)致現(xiàn)有的磁盤(pán)或分區(qū)中所有的文件被清除。格式化通常分為低級(jí)
    的頭像 發(fā)表于 01-09 15:20 ?8.6w次閱讀

    關(guān)于MDK-ARM代碼格式化插件AStyle

    MDK-ARM代碼格式化插件AStyle
    的頭像 發(fā)表于 03-07 16:34 ?2421次閱讀

    python字符串格式化

    python字符串格式化 格式化輸出,主要有三種方式 使用 % 進(jìn)行格式化 使用 format 函數(shù)進(jìn)行格式化 使用 f-string 進(jìn)行
    的頭像 發(fā)表于 02-21 16:28 ?1575次閱讀
    <b class='flag-5'>python</b>字符串<b class='flag-5'>格式化</b>

    如何使用 Java 原生格式化Instant

    今天我們將聊聊如何在Java中把個(gè) Instant 格式化一個(gè)字符串。我們將展示如何使用 Java 原生和第三方庫(kù)(如Joda-Time)來(lái)處理這個(gè)事情。 使用 Java 原生
    的頭像 發(fā)表于 10-09 14:51 ?1259次閱讀

    如何用行命令格式化 Python 代碼

    統(tǒng)代碼規(guī)范??!然而這顯然是不可能的。 不過(guò)雖然無(wú)法改變他人,但我們可以改變自己?,F(xiàn)在有了Black這個(gè)神器,我們可以在終端中輸入句命令自動(dòng)使用最規(guī)范的代碼風(fēng)格來(lái)
    的頭像 發(fā)表于 10-31 10:35 ?590次閱讀
    如何用<b class='flag-5'>一</b>行命令<b class='flag-5'>格式化</b> <b class='flag-5'>Python</b> <b class='flag-5'>代碼</b>

    基于Python 超簡(jiǎn)單格式化代碼

    統(tǒng)代碼規(guī)范??!然而這顯然是不可能的。 不過(guò)雖然無(wú)法改變他人,但我們可以改變自己?,F(xiàn)在有了Black這個(gè)神器,我們可以在終端中輸入句命令自動(dòng)使用最規(guī)范的代碼風(fēng)格來(lái)
    的頭像 發(fā)表于 11-01 11:27 ?532次閱讀
    基于<b class='flag-5'>Python</b> 超簡(jiǎn)單<b class='flag-5'>格式化</b><b class='flag-5'>代碼</b>

    Black:自動(dòng)格式化代碼的神器

    代碼規(guī)范?。?沒(méi)事,現(xiàn)在有Black這個(gè)神器,我們可以在終端中輸入句命令就自動(dòng)格式化代碼!而且對(duì)于初學(xué)者來(lái)說(shuō),用Black來(lái)學(xué)習(xí)代碼規(guī)范也
    的頭像 發(fā)表于 11-02 14:51 ?1315次閱讀
    Black:自動(dòng)<b class='flag-5'>格式化</b><b class='flag-5'>代碼</b>的神器
    RM新时代网站-首页