1. 程式人生 > >python必須瞭解的一些知識

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
    類:駝峰法

    命名,首字母大寫,私有類下劃線開頭,HelloWorld
    函式:小寫字母命名,私有函式下劃線開頭,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函式,不會匯入整個模組
    

    匯入要求:要求被匯入的模組與準備匯入的模組檔案是同級,若不在同級,則需要將模組的路徑加入該檔案的環境變數裡