Python知識梳理

來源:互聯網
上載者:User

這是個人學習筆記,非教程,內容會有些混亂

極簡教程   資料類型

我們可以使用type()函數類擷取對象的類型,Python3中內建資料類型包括:None,int,float,complex,str,list,dict,tuple,set,frozenset,range等,Python2中還有long類型,Python中並沒有內建數群組類型。

dict,list,set這些是可變類型(使用者自訂類型也可變),可以改變類型對象的值;數值和字串類型則是不可變的。

  • str
    與js一樣,python中字串即可用單引號也可用雙引號表示

  • numbers
    Python3中數實值型別有:intfloat兩種

  • list
    字面量表示:[1,1.0,False,'list']
    列表推導式,建立列表的一種簡易方法:

     

     

  • tuple
    字面量表示:(1,1.0,False,'tuple')

  • range

list、tuple、range均屬於序列類型(Sequence Types)

  • dict

     

     

     

  • set/frozenset
    集合是不包含重複元素的資料集,frozenset是不可變的,set是可變的,可以使用字面量構建一個集合{1,2,2,4,5}會輸出{1,2,4,5}

     
類型轉換

Python中類型轉換隻需調用相關函數即可

函數
# 函數定義模板def func_name([self,][args]):    passdef say_hello():    print('hello python!')# python3.5之後,定義函數時可以添加類型說明# 這裡只是提供一個說明文檔而非強制類型約束def type_instruction(num:int)->int:    return num

 

定義多傳回值函數

# 多傳回值函數,返回一個tuple對象def multi_returns():    return 0,1

 

內建函數

Python中有許多內建函數:

  • dir
    我們可以使用dir()函數來查看對象都含有哪些成員:

     

     

     

  • map

     

     

  • filter

     

     

  • reduce不是內建函數,但也很有用

     

     

lambda

Python中使用lambda關鍵字即可建立lambda運算式:

 

 

*args 與 **kvargs

*args**kvargs都用於函數中接收多個參數,這裡argskvargs只是約定俗成的寫法,可以換成其它的名稱,但***則是必須的。
*args**kvargs的區別是,*args用於接受普通參數,**kvargs用於接受索引值對參數。

 

 

 

 

   三元運算子 

 

物件導向

Python中一切皆對象(這句話理解起來並不是那麼容易),包括函數(C#,JAVA中函數不能獨立存在)。這裡貼一篇以前寫的文章:Python中的類、對象、繼承

Python按引用傳遞對象,對於不可變對象在修改時會產生新的對象;而對於可變對象,所有的修改都會反映在原有對象上。

魔術方法是Python物件模型的重要部分。

 

可以動態給對象/類型添加屬性,若給類型添加屬性,則該屬性在已產生的執行個體上也是可見的:

 

 

 

異常與錯誤

Python中異常與錯誤類間關係如下:

 

 


自訂異常只需繼承Exception或各種Error類即可

 

異常處理
try:    raise IOError('使用raise語句拋出異常')except IOError as err:    print(err)else:    print('未發生異常則執行')finally:    pass

 

捕獲多個異常類型:

try:    raise IOError()except (IOError,TypeError):    pass

 

with語句

with...as...語句等價於try...finally...,與C#中的using語句類似

命名規範

module_name, package_name, ClassName, method_name, ExceptionName, function_name, GLOBAL_VAR_NAME, instance_var_name, function_parameter_name, local_var_name.

應該避免的名稱
  1. 單字元名稱, 除了計數器和迭代器.
  2. 包/模組名中的連字號(-)
  3. 雙底線開頭並結尾的名稱(Python保留, 例如init)
命名規範
  1. 所謂”內部(Internal)”表示僅模組內可用, 或者, 在類內是保護或私人的.
  2. 用單底線(_)開頭表示模組變數或函數是protected的(使用import * from時不會包含).
  3. 用雙底線(__)開頭的執行個體變數或方法表示類內私人.
  4. 將相關的類和頂級函數放在同一個模組裡. 不像Java, 沒必要限制一個類一個模組.
  5. 對類名使用大寫字母開頭的單詞(如CapWords, 即Pascal風格), 但是模組名應該用小寫加底線的方式(如lower_with_under.py). 儘管已經有很多現存的模組使用類似於CapWords.py這樣的命名, 但現在已經不鼓勵這樣做, 因為如果模組名碰巧和類名一致, 這會讓人困擾.
Python之父Guido推薦的規範
Type Public Internal
Modules lower_with_under _lower_with_under
Packages lower_with_under  
Classes CapWords _CapWords
Exceptions CapWords  
Functions lower_with_under() _lower_with_under()
Global/Class Constants CAPS_WITH_UNDER _CAPS_WITH_UNDER
Global/Class Variables lower_with_under _lower_with_under
Instance Variables lower_with_under _lower_with_under (protected) or __lower_with_under (private)
Method Names lower_with_under() _lower_with_under() (protected) or __lower_with_under() (private)
Function/Method Parameters lower_with_under  
Local Variables lower_with_under  
包與模組
  • 模組
    包含Python語句或定義的檔案就是一個模組,檔案名稱就是模組名。在一個模組中,模組名是全域變數__name__的值。


  • 包含__init__.py檔案的檔案夾即可視為一個包,包用於管理模組,可以防止模組命名衝突。如:A.CB.C,分別表示A包中的C模組和B包中的C模組。

  • 匯入模組:
    import aimport a as aliasfrom a import *from a import b,c
    Python解譯器會先從內建模組中尋找匯入的模組,然後從sys.path中指定的模組搜尋路徑尋找模組

測試

編寫一個檔案操作類,檔案名稱為file_operator.py

# coding=utf-8import codecsclass FileOperator:    def save_file(self, file_path, content, encoding="utf-8"):        with codecs.open(file_path, "w", encoding) as f:            f.write(content)

 

編寫測試案例,檔案名稱為test_file_operator.py

# coding=utf-8import unittestclass TestFileOperator(unittest.TestCase):    def test_save_file(self):        content = "file content \r\n 常值內容"        opt = file.FileOperator()        opt.save_file("1.txt", content)if __name__ == "__main__":    unittest.main()

 

工具推薦
  • iPython
  • VS Code
  • PyCharm
小結

以上是自己近期學習Python的一些總結,全文的主要關注點在Python語言本身。掌握以上內容後,便可以用Python寫些指令碼,輔以其他第三方包或架構就可以幹更多更複雜的事了。如,爬蟲、資料分析、後端開發以及現在比較熱的人工智慧(其實,我是不建議追熱點的)。

用了一段時間的Python後,會覺著Python挺有意思的。

最後附上一張,個人總結的語言學習套路:

 

 

 

推薦閱讀

人生苦短,為什麼我要用Python?
Python風格規範
Python語言規範
[Python]記憶體管理
Python進階
Python 入門指南
Python 3.7.0 documentation

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.