python風(fēng)格

python風(fēng)格

命名規(guī)范

The following naming styles are commonly distinguished:

b (single lowercase letter)
B (single uppercase letter)
lowercase
lower_case_with_underscores
UPPERCASE
UPPER_CASE_WITH_UNDERSCORES
CapitalizedWords (or CapWords, or CamelCase -- so named because of the bumpy look of its letters [3] ). This is also sometimes known as StudlyCaps.
Note: When using abbreviations in CapWords, capitalize all the letters of the abbreviation. Thus HTTPServerError is better than HttpServerError.
mixedCase (differs from CapitalizedWords by initial lowercase character!)

  1. 模塊名:
    lowercase / lower_case_with_underscores,小寫字母,單詞之間用_分割. 如ad_stats.py

  2. 包名:
    lowercase,盡量不要使用_,部分系統(tǒng)不支持。就是文件夾名。

  3. 類名:
    CapitalizedWords,單詞首字母大寫。部分異常名和內(nèi)建變量名也采用CapWords。如AdStats, ConfigUtil
    4.異常名
    異常也是類,同類名。如果是錯誤,用“Error”后綴

  4. 全局變量名:
    lowercase / lower_case_with_underscores,類似函數(shù)的命名規(guī)范, 建議指模塊內(nèi)部使用的全局變量??梢酝ㄟ^from M import *調(diào)用,通過__all__機(jī)制限制調(diào)用。

  5. 函數(shù)名:
    lowercase / lower_case_with_underscoresmixedCase僅在先前代碼中這種風(fēng)格占據(jù)優(yōu)勢的情況下使用,以保持向后兼容。如get_name()

  6. 函數(shù)和方法參數(shù)
    Always use self for the first argument to instance methods. Always use cls for the first argument to class methods.

  7. 方法名和實例變量
    lowercase / lower_case_with_underscores,類似函數(shù)的命名規(guī)范??梢圆捎?code>_前綴標(biāo)志內(nèi)部使用。采用命名重整規(guī)則來避免和子類的命名沖突。

  8. 常量
    UPPERCASE / UPPER_CASE_WITH_UNDERSCORES,用于模塊水平。

  9. 繼承的設(shè)計
    始終要確定一個類中的方法和實例變量是否要被公開. 通常, 永遠(yuǎn)不要將數(shù)據(jù)變量公開, 除非你實現(xiàn)的本質(zhì)上只是記錄. 人們總是更喜歡給類提供一個函數(shù)的接口作為替換 (Python 2.2 的一些開發(fā)者在這點上做得非常漂亮).

    同樣, 確定你的屬性是否應(yīng)為私有的. 私有與非公有的區(qū)別在于: 前者永遠(yuǎn)不會被用在一個派生類中, 而后者可能會. 是的, 你應(yīng)該在大腦中就用繼承設(shè)計好了你的類. 私有屬性必須有兩個前導(dǎo)下劃線, 無后置下劃線. 非公有屬性必須有一個前導(dǎo)下劃線, 無后置下劃線.

    公共屬性沒有前導(dǎo)和后置下劃線, 除非它們與保留字沖突, 在此情況下, 單個后置下劃線比前置或混亂的拼寫要好, 例如: class_優(yōu)于klass. 最后一點有些爭議; 如果相比class_你更喜歡klass, 那么這只是一致性問題.

    注意: 'cls' is the preferred spelling for any variable or argument which is known to be a class, especially the first argument to a class method.

另外,以下特殊形式可以和以上任何情況結(jié)合使用:

  1. 弱“內(nèi)部使用”標(biāo)志 / 非公有屬性:
    _開頭,from M import *不會導(dǎo)入以下劃線開頭的對象/方法/實例變量,但是子類可以使用。如_get_price(), _instance_var

  2. 類私有屬性 / 方法:
    __開頭(2個下劃線),外部調(diào)用采用命名重整規(guī)則即, inside class FooBar,__boo becomes _FooBar__boo。一般情況下僅用于當(dāng)屬性可被子類繼承時,避免與子類的命名沖突。如__private_var, __get_name()

  3. 魔法對象或?qū)傩裕?br> __開頭,__結(jié)尾,一般為python的自有變量,不要以這種方式命名. 如__doc__, __class__

  4. 下劃線_后綴:
    和保留字沖突的時候使用

  5. __all__機(jī)制

    __all__=["fun","class"]
    

    __all__可用于模塊導(dǎo)入時限制,如:from module import *,此時被導(dǎo)入模塊若定義了__all__屬性,則只有__all__內(nèi)指定的屬性、方法、類可被導(dǎo)入。若沒定義,則模塊內(nèi)的所有非私有方法/屬性/類將被導(dǎo)入。

術(shù)語

類的方法和實例變量統(tǒng)稱為屬性,a class's methods and instance variables (collectively: "attributes")。

python包含packages, modules, classes, functions, attributes等

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Python是一種對代碼風(fēng)格很重視的語言,從縮進(jìn)就能看出這一點,Python強(qiáng)調(diào)易于理解。最近在負(fù)責(zé)代碼重構(gòu)的工作...
    知曰閱讀 11,349評論 1 85
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,534評論 19 139
  • Python編碼規(guī)范 1 排版 1.1 Indentation縮進(jìn) 在參數(shù)過多時適當(dāng)縮進(jìn) 換行應(yīng)該使用同級的縮進(jìn)...
    帝Bug閱讀 892評論 0 1
  • 為了便于項目的管理和代碼的閱讀,養(yǎng)成良好的編碼風(fēng)格以及溝通方便,編碼Python代碼時應(yīng)遵循以下編碼規(guī)范: 每行長...
    NoFacePeace閱讀 1,152評論 0 1
  • --< > 令人討厭的小人物身上有著愚蠢的一致性 --(A Foolish Consistency is the ...
    LittleWizard閱讀 3,354評論 0 4

友情鏈接更多精彩內(nèi)容