python必須瞭解的一些知識
python工程組織結構包括(包>模組>類>方法>變數),方法和變數好理解,那麼我們就弄清楚包、模組、類的含義
包、模組、類的概念
-
包(Package)
包:在Pycharm中的表現形式就是左側檔案列表中的一個目錄,通常存放多個關係密切的模組,唯一需要注意的就是,只有包含_ init _.py檔案的目錄才叫做’包’.
右鍵New→Python Package就是建立’包’的過程
-
模組(module)
模組:是一個檔案,可以直接使用import匯入,可作為模組的檔案型別有’.py’,’.pyo’,’.pyc’,’.pyd’,’.so’,’.dll’
-
類
類:用來描述具有共同特徵的一類事物,就像我們通俗理解的’人類’可被看作一個類,然後用這個類定義出每個具體的人–你,我,他等作為其物件;類還有屬性和功能,屬性就是這類事物的特徵,功能就是能做什麼,也就是方法或函式,舉例說明class Person(): #定義類,起名為Person n = 100 #類屬性,類內的變數 def __init__(self,name,age,phone): #建構函式,類接收外部傳入引數全靠建構函式 self.name = name self.age = age self.phone = phone def printing_name(self): #類的方法 print('我的名字是:%s'%self.name) def printing_age(self): print("我的年齡:%s"%self.age) def printing_phone(self): print("我的號碼:%s"%self.phone) test = Person('luke',21,'123456') #類的例項化,將引數傳入類中,傳入參 #數可以多但不可以少於類建構函式的引數(self引數 #除外,self是將例項化的變數名傳入類) print("這是類例項化後的記憶體地址:%s"%test) test.printing_name() #呼叫例項化後類中的方法 test.name = 'moon' #可以修改建構函式中引數的值 test.printing_name() test.printing_phone() print(test.n) test.n = 200 #修改類屬性,只針對test例項化生效 print(test.n,'\n====================') t2 = Person('jack',22,'112233') #例項化類物件,命名t2 print(t2.n) t2.printing_age()
編碼規範
-
程式碼編排
縮排:4個空格的縮排(IDE可自動判斷縮排),儘量不適用Tab,也不要Tab和空格混用
換行:使用反斜槓 ’ \ '換行
空行:類和top-level函式定義之間空兩行;各方法定義之間空一行;函式內邏輯無關段落間空一行 -
空格的使用
右括號前不加空格
逗號,冒號,分號前不加空格
函式序列左括號前不加空格,func(),list()
多語句不寫在同一行,使用’ ; ’
if/for/while語句中,必須另起一行寫執行語句
不使用tab鍵,儘量都是用空格 -
命名規範
包:小寫字母命名,可使用下劃線,lower_with_under
類:駝峰法
函式:小寫字母命名,私有函式下劃線開頭,lower_with_under
變數:小寫字母命名,私有變數下劃線開頭,lower_with_under
常量:全大寫字母命名,私有常量下劃線開頭,CAPS_WITH_UNDER
總結
1 唯獨類命名用駝峰法
2 常量字母都是大寫
3 其他全是小寫用下劃線分隔
4 下劃線開頭的都是私有的
補充
-
特殊模組_ init _.py
_ init _.py模組,是在新建包時,自動建立的模組,也叫初始化模組;我們在匯入該包時,預設會先執行該模組,我們驗證一下:#在_ _init_ _.py模組中加入 print('開始匯入包')
有_ init _.py模組的資料夾才叫做’包’,才可以被匯入 -
_name _=’_main _'
經典解釋 → '讓你的指令碼模組既可以匯入其他模組使用,也可使該模組自己執行’#module.py def main(): print('我是被直接執行的') if __name__=='__main__': main() else: print('我被匯入') --------------------------- #test.py import module print('匯入完成')
我們在直接執行module.py檔案時,會執行if判斷中的內容,最終輸出’我是被直接執行的’;
當我們執行test.py檔案時,匯入了module模組,最終輸出’我被匯入’ \n ‘匯入完成’,沒有執行if判斷中的內容,為什麼?
解釋:
_name _ :前後加雙下劃線表明是系統定義的變數名,是用來標識模組名字的一個系統變數
如果模組是被匯入的,_name _ 的值就是模組名字
如果模組是被直接執行的,_name _的值就是’_main _’
檔案中有if _name _ == ‘_main _’,則表明該我檔案是整個工程的入口檔案 -
模組匯入
#import語句 import module ## 匯入module模組,python直譯器通過sys.path的路徑搜尋該模組 module.name() ## 呼叫module中的函式 #更改呼叫名稱 import module as md ## 匯入module模組,並命名為md md.name() ## 呼叫module中的函式 #from...import...語句 from module import name ## 匯入module模組中的name函式,不會匯入整個模組
匯入要求:要求被匯入的模組與準備匯入的模組檔案是同級,若不在同級,則需要將模組的路徑加入該檔案的環境變數裡