一文輕松掌握python語(yǔ)言命名規(guī)范規(guī)則
和C/C++、Java等語(yǔ)言一樣,python在命名上也有一套約定俗成的規(guī)則,符合規(guī)范的命名可以讓程序的可讀性大大增加,從而使得代碼的邏輯性增強(qiáng),易于自己和其他協(xié)作者在以后的拓展中理解代碼的意義,從而提高編寫代碼的效率。
我們?cè)谄匠>帉懗绦虻臅r(shí)候需要注意以下幾點(diǎn):
一、python變量名命名的硬性規(guī)則
1.1. 變量名大小寫敏感
python變量名區(qū)分大小寫,也就是Student和student在python語(yǔ)言中代表兩個(gè)不同的名字。
1.2. python的變量名字中可以包含英文、下劃線、數(shù)字,但是不能以數(shù)字開頭。
也就是說(shuō),student_id、student1、student_1、student、_student、_等都是合理的命名,但是1student就是非法的命名。
二、不同風(fēng)格命名的變量代表不同的類型
與java中命名習(xí)慣使用駝峰命名法不同(有可能發(fā)明java的程序猿大哥不但喜歡喝爪哇島的咖啡,也喜歡騎爪哇島上的駱駝,哈哈),python變量命名一般采用蛇形命名法(畢竟python的本意就是大蟒蛇),也就是如果變量名由兩個(gè)單詞組成,那么使用下劃線來(lái)連接這兩個(gè)單詞,比如student_id。當(dāng)然,我們也會(huì)在python中看到類似駝峰命名法的變量名,對(duì)于專業(yè)的程序猿來(lái)說(shuō),這些命名都不是隨便寫的,他們符合一定的標(biāo)準(zhǔn),下面總結(jié)以下:
2.1.模塊(module)命名風(fēng)格
模塊盡量使用小寫命名,首字母保持小寫,盡量不要用下劃線(除非多個(gè)單詞,且數(shù)量不多的情況)
# 正確的模塊名 import decoder import html_parser # 不推薦的模塊名 import Decoder
2.2.類(class)的命名
類名使用駝峰(CamelCase)命名風(fēng)格,首字母大寫,私有類可用一個(gè)下劃線開頭
class Farm(): pass class AnimalFarm(Farm): pass class _PrivateFarm(Farm): pass
2.3.函數(shù)(function)的命名
函數(shù)名一律小寫,如有多個(gè)單詞,用下劃線隔開。
def run(): pass def run_with_env(): pass
2.4.變量(variable)的命名
變量名盡量小寫, 如有多個(gè)單詞,用下劃線隔開
if __name__ == '__main__': count = 0 school_name = ''
2.5.常量(constant)的命名
如果我們想用一個(gè)符號(hào)來(lái)代表常量(值是不變的量,比如光速、π等),采用全部大寫,如有多個(gè)單詞,使用下劃線隔開。
MAX_CLIENT = 100 MAX_CONNECTION = 1000 CONNECTION_TIMEOUT = 600
三、“下劃線”開頭的特殊命名
很多時(shí)候,我們?cè)趐ython的源代碼中會(huì)看到下劃線開頭的變量,初學(xué)者看到這些變量會(huì)感覺怪怪的。確實(shí),這些“_”開頭的命名是具有特殊含義的:
3.1.單下劃線開頭的命名
- 如果類變量以單下劃線“_”開頭,代表這個(gè)變量不能被直接訪問,類似于C++中的protected型,這樣的變量也不能被 import
- module_name導(dǎo)入。
- 使用單下劃線(one underline)開頭的方法,則表示該方法不是AP的一部分,不要直接訪問(雖然語(yǔ)法上訪問也沒有什么問題)。
3.2.雙下劃線開頭的命名
- 以雙下劃線(two underlines)開頭的類變量,表示為類的私有成員,不能被導(dǎo)入和其他類變量訪問。
- 對(duì)于類中的方法,使用雙下劃線開頭開頭表示子類不能覆寫該方法。除非你真的知道你在干什么,否則不要使用這種方式。
3.3.雙下劃線開頭并且雙下劃線結(jié)尾的命名
魔法方法:以雙下劃線開頭和雙下劃線結(jié)尾的變量是Python的專用標(biāo)識(shí),有其特殊的身份。我們一般稱這樣的方法為“魔法方法”(magic method)。
- 魔法方法是python內(nèi)置方法,不需要主動(dòng)調(diào)用,存在的目的是為了給python的解釋器進(jìn)行調(diào)用,幾乎每個(gè)魔法方法都有一個(gè)對(duì)應(yīng)的內(nèi)置函數(shù),或者運(yùn)算符,當(dāng)我們對(duì)這個(gè)對(duì)象使用這些函數(shù)或者運(yùn)算符時(shí)就會(huì)調(diào)用類中的對(duì)應(yīng)魔法方法,可以理解為重寫這些python的內(nèi)置函數(shù)。
- 當(dāng)你想讓自己定義的對(duì)象也可以像Python內(nèi)置的對(duì)象一樣使用內(nèi)置的一些函數(shù)或操作符(比如len、add、+、、==等)時(shí),你可以定義該類方法。
- 當(dāng)然還有些屬性只在末尾加了但下劃線這僅僅是為了避免我們起的一些名字和Python保留關(guān)鍵字沖突,沒有特殊含義。
- 下劃線變量(方法)的使用,往往和面向?qū)ο缶幊讨蓄悾╟lass)的設(shè)計(jì)相關(guān),更多更深入的知識(shí),可以參考 這篇博客。當(dāng)然,如果需要了解更多python編程規(guī)范,PEP8(Python Enhancement Proposal8)的官方文檔是最佳的參考資料。
到此這篇關(guān)于一文輕松掌握python語(yǔ)言命名規(guī)范規(guī)則的文章就介紹到這了,更多相關(guān)python命名規(guī)范 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python中猜拳游戲與猜篩子游戲的實(shí)現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于Python中猜拳游戲與猜篩子游戲的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09python 統(tǒng)計(jì)代碼行數(shù)簡(jiǎn)單實(shí)例
這篇文章主要介紹了python 統(tǒng)計(jì)代碼行數(shù)簡(jiǎn)單實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-05-05對(duì)Python _取log的幾種方式小結(jié)
今天小編就為大家分享一篇對(duì)Python _取log的幾種方式小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07Django利用LogEntry生成歷史操作實(shí)戰(zhàn)記錄
LogEntry是在后臺(tái)開發(fā)中經(jīng)常用到的模塊,它在admin是默認(rèn)開啟的。文中給大家介紹了在admin頁(yè)面上查看操作日志的方法及實(shí)戰(zhàn)代碼,感興趣的朋友跟隨小編一起看看吧2021-12-12Python和OpenCV進(jìn)行多尺度模板匹配實(shí)現(xiàn)
本文將實(shí)現(xiàn)如何將標(biāo)準(zhǔn)模板匹配擴(kuò)展到多尺度,使其可以處理模板和輸入圖像大小不同的匹配。具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09python并發(fā)執(zhí)行request請(qǐng)求的示例
這篇文章主要介紹了python并發(fā)執(zhí)行request請(qǐng)求,我將為我們展示使用concurrent.futures.ThreadPoolExecutor和requests庫(kù)并發(fā)執(zhí)行HTTP請(qǐng)求的示例,需要的朋友可以參考下2024-06-06Python實(shí)現(xiàn)克里金插值法的過(guò)程詳解
克里金算法提供的半變異函數(shù)模型有高斯、線形、球形、阻尼正弦和指數(shù)模型等,在對(duì)氣象要素場(chǎng)插值時(shí)球形模擬比較好。本文將用Python實(shí)現(xiàn)克里金插值法,感興趣的可以了解一下2022-11-11python爬蟲爬取筆趣網(wǎng)小說(shuō)網(wǎng)站過(guò)程圖解
這篇文章主要介紹了python爬蟲爬取筆趣網(wǎng)小說(shuō)網(wǎng)站過(guò)程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11