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

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

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

機(jī)器學(xué)習(xí)算法與Python學(xué)習(xí)簡(jiǎn)單的編碼規(guī)范

馬哥Linux運(yùn)維 ? 來源:未知 ? 作者:李倩 ? 2018-05-14 14:45 ? 次閱讀

0、前言

本文是閱讀《Python Coding Rule》之后總結(jié)的最為精華及簡(jiǎn)單的編碼規(guī)范,根據(jù)每個(gè)人不同喜好有些地方會(huì)有不同的選擇,我只是做了對(duì)自己來說最簡(jiǎn)單易行的選擇,僅供大家參考。

1、重要原則

a.保持風(fēng)格的一致性很重要,但最重要的是:知道何時(shí)不一致b.打破一條既定規(guī)則的兩個(gè)好理由:c.當(dāng)應(yīng)用規(guī)則會(huì)導(dǎo)致代碼可讀性下降(可讀性賽高)d.為了和周圍代碼保持一致而打破規(guī)則(歷史遺留)

2、最簡(jiǎn)規(guī)范

a.只使用空格縮進(jìn)b.使用UTF-8編碼c.每行只寫一條語句d.使用行末反斜杠折疊長(zhǎng)行,限制每行最大79字符e.導(dǎo)入包:每行唯一、從大到小、絕對(duì)路徑f.類內(nèi)方法空1行分隔,類外空2行分隔g.運(yùn)算符除 * 外,兩邊空1格分隔,函數(shù)參數(shù)=周圍不用空格h.除類名使用駝峰法以外,其他模塊、函數(shù)、方法、變量均使用全小寫+下劃線i.1個(gè)前導(dǎo)下劃線表示半公開,2個(gè)前導(dǎo)下劃線表示私有,與保留字區(qū)分使用單個(gè)后置下劃線j.開發(fā)時(shí)使用中文注釋,發(fā)布時(shí)再寫英文文檔

3、詳細(xì)規(guī)范

a.全文通用b.只使用空格縮進(jìn),4個(gè)空格表示1個(gè)縮進(jìn)層次c.每行長(zhǎng)度限制在79字符內(nèi),使用行末反斜杠折疊長(zhǎng)行d.使用UTF-8編碼e.每行只寫一條語句

4、代碼命名

一行只import一個(gè)包,Imports的順序?yàn)椋簶?biāo)準(zhǔn)庫、相關(guān)主包、特定應(yīng)用,每組導(dǎo)入之間放置1行空行,所有導(dǎo)入使用包的絕對(duì)路徑。

分割頂層函數(shù)和類的定義使用2行空行,分割類內(nèi)方法定義使用1行空行,class行與第一個(gè)方法定義之間要有1行空行。

整體使用英文書寫方式來使用空格,即僅在逗號(hào)、分號(hào)后面添加1個(gè)空格,其他任何符號(hào)如圓括號(hào)、方括號(hào)、花括號(hào)等都不用空格把符號(hào)與字符分開,寫在一起表示一個(gè)整體;運(yùn)算符除 * 號(hào)以外,其他符號(hào)兩邊都各用1個(gè)空格分隔;函數(shù)參數(shù)=號(hào)周圍不用空格。

模塊名:不含下劃線、簡(jiǎn)短、全小寫;

類名、異常名:首字母大寫單詞串的駝峰法;

函數(shù)名、全局變量名、方法名、實(shí)例變量:全小寫,加下劃線增加可讀性;

一個(gè)前導(dǎo)下劃線僅用于不想被導(dǎo)入的全局變量(還有內(nèi)部函數(shù)和類)前加一個(gè)下劃線)、不打算作為類的公共接口的內(nèi)部方法和實(shí)例變量;

兩個(gè)前導(dǎo)下劃線以表示類私有的名字,只用來避免與類(為可以子類化所設(shè)計(jì))中的屬性發(fā)生名字沖突。

私有屬性必須有兩個(gè)前導(dǎo)下劃線,無后置下劃線;

非公有屬性必須有一個(gè)前導(dǎo)下劃線,無后置下劃線。

公共屬性沒有前導(dǎo)和后置下劃線,除非它們與保留字沖突,此情況下,單個(gè)后置下劃線比前置或混亂的拼寫要好,例如:class_優(yōu)于klass。

5、編寫技巧

與None之類的單值比較,永遠(yuǎn)用:'is'或'is not'來做:if x is not None

在模塊和包內(nèi)定義基異常類(base exception class)

使用字符串方法(methods)代替字符串模塊。

在檢查前綴或后綴時(shí)避免對(duì)字符串進(jìn)行切片,用startswith()和endswith()代替,如:No: if foo[:3] == 'bar':Yes: if foo.startswith('bar'):

只用isinstance()進(jìn)行對(duì)象類型的比較,如:No: if type(obj) is type(1):Yes: if isinstance(obj, int)

判斷True或False不要用 ==,如:No: if greeting == True:Yes: if greeting:

6、注釋

開發(fā)時(shí),注釋全部用中文來寫,當(dāng)要發(fā)布腳本工具時(shí),再寫英文文檔。

注釋應(yīng)該是是完整的句子(短語也可),首字母大寫;如果注釋很短,省略末尾句號(hào);注釋塊由一個(gè)or多個(gè)完整句子構(gòu)成的段落組成,則每個(gè)句子使用句子結(jié)尾;句末句號(hào)后使用兩個(gè)空格。

注釋塊每行以#和一個(gè)空格開始,并且跟隨注釋的代碼具有相同的縮進(jìn)層次,注釋塊上下方有一空行包圍。

謹(jǐn)慎使用行內(nèi)注釋,至少使用兩個(gè)空格與語句分開。

使用 pydoc; epydoc; Doxgen 等文檔化工具,為所有公共模塊、函數(shù)、類和方法邊寫文檔字符串,文檔字符串對(duì)非公開的方法不是必要的,但你應(yīng)該有一個(gè)描述這個(gè)方法做什么的注釋,這個(gè)注釋應(yīng)該在"def"這行后。

多行文檔字符串結(jié)尾的""" 應(yīng)該單獨(dú)成行。

版本注記:定義一個(gè)變量__version__ = "$Revision: 1.4 $"

Stay hungry. Stay foolish.

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

    關(guān)注

    6

    文章

    920

    瀏覽量

    54711
  • 機(jī)器學(xué)習(xí)

    關(guān)注

    66

    文章

    8323

    瀏覽量

    132165
  • python
    +關(guān)注

    關(guān)注

    54

    文章

    4758

    瀏覽量

    84289

原文標(biāo)題:Python最簡(jiǎn)編碼規(guī)范

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Python機(jī)器學(xué)習(xí)常用庫

    歡迎的編程語言!人工智能是當(dāng)前最熱門話題之一,機(jī)器學(xué)習(xí)技術(shù)是人工智能實(shí)現(xiàn)必備技能,Python編程語言含有最有用的機(jī)器學(xué)習(xí)工具和庫,以下是
    發(fā)表于 03-26 16:29

    常用python機(jī)器學(xué)習(xí)庫盤點(diǎn)

    現(xiàn)在人工智能非?;鸨?,機(jī)器學(xué)習(xí)應(yīng)該算是人工智能里面的一個(gè)子領(lǐng)域,而其中有一塊是對(duì)文本進(jìn)行分析,對(duì)數(shù)據(jù)進(jìn)行深入的挖掘提取一些特征值,然后用一些算法學(xué)習(xí),訓(xùn)練,分析,甚至還能預(yù)測(cè),那么
    發(fā)表于 05-10 15:20

    使用 Python 開始機(jī)器學(xué)習(xí)

    功能的程序庫,scikit-learn是你的最佳選擇!這個(gè)優(yōu)秀的免費(fèi)軟件提供了機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘所需要的所有工具。它是目前Python機(jī)器學(xué)習(xí)
    發(fā)表于 12-11 18:37

    Python機(jī)器學(xué)習(xí)庫和深度學(xué)習(xí)庫總結(jié)

    是基于Scipy為機(jī)器學(xué)習(xí)建造的的一個(gè)Python模塊,他的特色就是多樣化的分類,回歸和聚類的算法包括支持向量機(jī),邏輯回歸,樸素貝葉斯分類器,隨機(jī)森林,Gradient Boosti
    發(fā)表于 11-10 14:49 ?871次閱讀

    Python機(jī)器學(xué)習(xí)

    囊括一些很好的Python機(jī)器學(xué)習(xí)庫的清單,并將其張貼在下面。 在我看來,Python學(xué)習(xí)(和實(shí)現(xiàn))機(jī)
    發(fā)表于 10-13 16:21 ?0次下載

    Python基礎(chǔ)教程之《Python機(jī)器學(xué)習(xí)—預(yù)測(cè)分析核心算法》免費(fèi)下載

     在學(xué)習(xí)和研究機(jī)器學(xué)習(xí)的時(shí)候,面臨令人眼花繚亂的算法,機(jī)器學(xué)習(xí)新手往往會(huì)不知所措。本書從
    發(fā)表于 09-29 08:00 ?19次下載

    python機(jī)器學(xué)習(xí)和深度學(xué)習(xí)學(xué)習(xí)書籍資料免費(fèi)下載

    本文檔的主要主要內(nèi)容詳細(xì)介紹的是python機(jī)器學(xué)習(xí)和深度學(xué)習(xí)學(xué)習(xí)書籍資料免費(fèi)下載。
    發(fā)表于 11-05 16:28 ?94次下載

    python機(jī)器學(xué)習(xí)筆記資料免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是python機(jī)器學(xué)習(xí)筆記資料免費(fèi)python機(jī)器學(xué)習(xí)筆記資料免費(fèi)下載
    發(fā)表于 03-01 10:09 ?39次下載

    Python機(jī)器學(xué)習(xí)應(yīng)用

    機(jī)器學(xué)習(xí)的目標(biāo):機(jī)器學(xué)習(xí)是實(shí)現(xiàn)人工智能的手段,主要研究?jī)?nèi)容是如何利用數(shù)據(jù)或經(jīng)驗(yàn)進(jìn)行學(xué)習(xí),改善具體算法
    發(fā)表于 05-25 16:24 ?19次下載

    python機(jī)器學(xué)習(xí)概述

    Python機(jī)器學(xué)習(xí)概述 機(jī)器學(xué)習(xí)是人工智能領(lǐng)域的一個(gè)重要分支,是一種可以自動(dòng)改進(jìn)和學(xué)習(xí)
    的頭像 發(fā)表于 08-17 16:11 ?1006次閱讀

    機(jī)器學(xué)習(xí)算法匯總 機(jī)器學(xué)習(xí)算法分類 機(jī)器學(xué)習(xí)算法模型

    機(jī)器學(xué)習(xí)算法匯總 機(jī)器學(xué)習(xí)算法分類 機(jī)器
    的頭像 發(fā)表于 08-17 16:11 ?1009次閱讀

    機(jī)器學(xué)習(xí)算法總結(jié) 機(jī)器學(xué)習(xí)算法是什么 機(jī)器學(xué)習(xí)算法優(yōu)缺點(diǎn)

    機(jī)器學(xué)習(xí)算法總結(jié) 機(jī)器學(xué)習(xí)算法是什么?機(jī)器
    的頭像 發(fā)表于 08-17 16:11 ?1700次閱讀

    機(jī)器學(xué)習(xí)算法入門 機(jī)器學(xué)習(xí)算法介紹 機(jī)器學(xué)習(xí)算法對(duì)比

    機(jī)器學(xué)習(xí)算法入門 機(jī)器學(xué)習(xí)算法介紹 機(jī)器
    的頭像 發(fā)表于 08-17 16:27 ?891次閱讀

    python數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)

    python數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí) Python是一個(gè)非常流行的編程語言,被廣泛用于數(shù)據(jù)挖掘和機(jī)器學(xué)習(xí)
    的頭像 發(fā)表于 08-17 16:29 ?1248次閱讀

    機(jī)器學(xué)習(xí)有哪些算法機(jī)器學(xué)習(xí)分類算法有哪些?機(jī)器學(xué)習(xí)預(yù)判有哪些算法?

    機(jī)器學(xué)習(xí)有哪些算法?機(jī)器學(xué)習(xí)分類算法有哪些?機(jī)器
    的頭像 發(fā)表于 08-17 16:30 ?1885次閱讀