表哥在阿里任職工程師,曾經學Python的學習筆記,知識梳理必備!

極簡教程

表哥在阿里任職工程師,曾經學Python的學習筆記,知識梳理必備!

數據類型(私信小編07獲取Python學習教程)

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

表哥在阿里任職工程師,曾經學Python的學習筆記,知識梳理必備!

dict,list,set 這些是可變類型(用戶自定義類型也可變),可以改變類型對象的值;數值和字符串類型則是不可變的。如果你感覺學不會?莫慌,小編推薦大家加入群,

前面548中間377後面875,群裡有志同道合的小夥伴,

互幫互助,還可以拿到許多視頻教程!

  • str
  • 與js一樣,python中字符串即可用單引號也可用雙引號表示
  • numbers
  • Python3中數值類型有: int 和 float 兩種
  • list
  • 字面量表示:[1,1.0,False,'list']
  • 列表推導式
    ,創建列表的一種簡易方法:
表哥在阿里任職工程師,曾經學Python的學習筆記,知識梳理必備!


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

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

  • dict
表哥在阿里任職工程師,曾經學Python的學習筆記,知識梳理必備!


  • set/frozenset
  • 集合是不包含重複元素的數據集,frozenset是不可變的,set是可變的,可以使用字面量構建一個集合 {1,2,2,4,5} 會輸出 {1,2,4,5}
表哥在阿里任職工程師,曾經學Python的學習筆記,知識梳理必備!


類型轉換

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

函數

# 函數定義模板
def func_name([self,][args]):
pass
def 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() 函數來查看對象都含有哪些成員:
表哥在阿里任職工程師,曾經學Python的學習筆記,知識梳理必備!


  • map
表哥在阿里任職工程師,曾經學Python的學習筆記,知識梳理必備!


  • filter
表哥在阿里任職工程師,曾經學Python的學習筆記,知識梳理必備!


  • reduce 不是內置函數,但也很有用
表哥在阿里任職工程師,曾經學Python的學習筆記,知識梳理必備!


lambda

Python中使用 lambda 關鍵字即可創建lambda表達式:

表哥在阿里任職工程師,曾經學Python的學習筆記,知識梳理必備!

*args 與 **kvargs

*args 和 **kvargs 都用於函數中接收多個參數,這裡 args 和 kvargs 只是約定俗成的寫法,可以換成其它的名稱,但 * 和 ** 則是必須的。

*args 和 **kvargs 的區別是, *args 用於接受普通參數, **kvargs 用於接受鍵值對參數。

表哥在阿里任職工程師,曾經學Python的學習筆記,知識梳理必備!

三元運算符

表哥在阿里任職工程師,曾經學Python的學習筆記,知識梳理必備!

面向對象

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

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

魔術方法 是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的學習筆記,知識梳理必備!

Python之父Guido推薦的規範

表哥在阿里任職工程師,曾經學Python的學習筆記,知識梳理必備!

包與模塊

  • 模塊
  • 包含Python語句或定義的文件就是一個模塊,文件名就是模塊名。在一個模塊中,模塊名是全局變量 __name__ 的值。
  • 包含 __init__.py 文件的文件夾即可視為一個包,包用於管理模塊,可以防止模塊命名衝突。如: A.C 和 B.C ,分別表示A包中的C模塊和B包中的C模塊。
  • 導入模塊
  • import a 、 import a as alias 、 from a import * 、 from a import b,c
  • Python解釋器會先從內置模塊中尋找導入的模塊,然後從 sys.path 中指定的 模塊搜索路徑尋找模塊

測試

編寫一個文件操作類,文件名為 file_operator.py :

# coding=utf-8
import codecs
class 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-8
import unittest
class 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的學習筆記,知識梳理必備!


分享到:


相關文章: