一文輕松掌握python語言命名規(guī)范規(guī)則
和C/C++、Java等語言一樣,python在命名上也有一套約定俗成的規(guī)則,符合規(guī)范的命名可以讓程序的可讀性大大增加,從而使得代碼的邏輯性增強(qiáng),易于自己和其他協(xié)作者在以后的拓展中理解代碼的意義,從而提高編寫代碼的效率。
我們在平常編寫程序的時(shí)候需要注意以下幾點(diǎn):
一、python變量名命名的硬性規(guī)則
1.1. 變量名大小寫敏感
python變量名區(qū)分大小寫,也就是Student和student在python語言中代表兩個(gè)不同的名字。
1.2. python的變量名字中可以包含英文、下劃線、數(shù)字,但是不能以數(shù)字開頭。
也就是說,student_id、student1、student_1、student、_student、_等都是合理的命名,但是1student就是非法的命名。
二、不同風(fēng)格命名的變量代表不同的類型
與java中命名習(xí)慣使用駝峰命名法不同(有可能發(fā)明java的程序猿大哥不但喜歡喝爪哇島的咖啡,也喜歡騎爪哇島上的駱駝,哈哈),python變量命名一般采用蛇形命名法(畢竟python的本意就是大蟒蛇),也就是如果變量名由兩個(gè)單詞組成,那么使用下劃線來連接這兩個(gè)單詞,比如student_id。當(dāng)然,我們也會在python中看到類似駝峰命名法的變量名,對于專業(yè)的程序猿來說,這些命名都不是隨便寫的,他們符合一定的標(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è)符號來代表常量(值是不變的量,比如光速、π等),采用全部大寫,如有多個(gè)單詞,使用下劃線隔開。
MAX_CLIENT = 100 MAX_CONNECTION = 1000 CONNECTION_TIMEOUT = 600
三、“下劃線”開頭的特殊命名
很多時(shí)候,我們在python的源代碼中會看到下劃線開頭的變量,初學(xué)者看到這些變量會感覺怪怪的。確實(shí),這些“_”開頭的命名是具有特殊含義的:
3.1.單下劃線開頭的命名
- 如果類變量以單下劃線“_”開頭,代表這個(gè)變量不能被直接訪問,類似于C++中的protected型,這樣的變量也不能被 import
- module_name導(dǎo)入。
- 使用單下劃線(one underline)開頭的方法,則表示該方法不是AP的一部分,不要直接訪問(雖然語法上訪問也沒有什么問題)。
3.2.雙下劃線開頭的命名
- 以雙下劃線(two underlines)開頭的類變量,表示為類的私有成員,不能被導(dǎo)入和其他類變量訪問。
- 對于類中的方法,使用雙下劃線開頭開頭表示子類不能覆寫該方法。除非你真的知道你在干什么,否則不要使用這種方式。
3.3.雙下劃線開頭并且雙下劃線結(jié)尾的命名
魔法方法:以雙下劃線開頭和雙下劃線結(jié)尾的變量是Python的專用標(biāo)識,有其特殊的身份。我們一般稱這樣的方法為“魔法方法”(magic method)。
- 魔法方法是python內(nèi)置方法,不需要主動調(diào)用,存在的目的是為了給python的解釋器進(jìn)行調(diào)用,幾乎每個(gè)魔法方法都有一個(gè)對應(yīng)的內(nèi)置函數(shù),或者運(yùn)算符,當(dāng)我們對這個(gè)對象使用這些函數(shù)或者運(yùn)算符時(shí)就會調(diào)用類中的對應(yīng)魔法方法,可以理解為重寫這些python的內(nèi)置函數(shù)。
- 當(dāng)你想讓自己定義的對象也可以像Python內(nèi)置的對象一樣使用內(nèi)置的一些函數(shù)或操作符(比如len、add、+、、==等)時(shí),你可以定義該類方法。
- 當(dāng)然還有些屬性只在末尾加了但下劃線這僅僅是為了避免我們起的一些名字和Python保留關(guān)鍵字沖突,沒有特殊含義。
- 下劃線變量(方法)的使用,往往和面向?qū)ο缶幊讨蓄悾╟lass)的設(shè)計(jì)相關(guān),更多更深入的知識,可以參考 這篇博客。當(dāng)然,如果需要了解更多python編程規(guī)范,PEP8(Python Enhancement Proposal8)的官方文檔是最佳的參考資料。
到此這篇關(guān)于一文輕松掌握python語言命名規(guī)范規(guī)則的文章就介紹到這了,更多相關(guān)python命名規(guī)范 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python進(jìn)行有限元仿真的使用及創(chuàng)建
這篇文章主要為大家介紹了Python進(jìn)行有限元仿真的創(chuàng)建及使用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10
Python + Chrome抓取AJAX動態(tài)數(shù)據(jù)的兩種方法
在現(xiàn)代 Web 開發(fā)中,AJAX技術(shù)被廣泛應(yīng)用于動態(tài)加載數(shù)據(jù),使得網(wǎng)頁能夠在不刷新的情況下更新內(nèi)容,本文將詳細(xì)介紹 Python + Chrome 如何抓取 AJAX 動態(tài)數(shù)據(jù),并提供兩種方法的完整實(shí)現(xiàn)代碼,需要的朋友可以參考下2025-04-04
淺談opencv自動光學(xué)檢測、目標(biāo)分割和檢測(連通區(qū)域和findContours)
這篇文章主要介紹了淺談opencv自動光學(xué)檢測、目標(biāo)分割和檢測(連通區(qū)域和findContours),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06
PyQt6?鍵盤事件處理的實(shí)現(xiàn)及實(shí)例代碼
本文主要介紹了PyQt6?鍵盤事件處理的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-09-09
python實(shí)戰(zhàn)之德州撲克第二步-判斷牌型
這篇文章主要介紹了python實(shí)戰(zhàn)之德州撲克第二步-判斷牌型,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)python的小伙伴們有非常好的幫助,需要的朋友可以參考下2021-04-04

