Python語言常用的49個基本概念及含義

dongfuguo發表於2020-11-09

好訊息:“Python小屋”程式設計比賽正式開始

推薦教材:《Python程式設計基礎與應用》(ISBN:9787111606178),董付國,機械工業出版社

圖書詳情:

配套資源:

用書教師可以聯絡董老師獲取教學大綱、課件、原始碼、電子教案、考試系統等配套教學資源。

《Python程式設計基礎與應用》前3章書稿PDF免費閱讀

《Python程式設計基礎與應用》課後習題答案

================

  1. 列表(list):內建型別,可變(或不可雜湊),其中可以包含任意型別的資料,支援使用下標和切片訪問其中的某個或某些元素,常用方法有append()、insert()、remove()、pop()、sort()、reverse()、count()、index(),支援運算子+、+=、*、*=。可以使用[]直接定義列表,也可以使用list()把其他型別的可迭代物件轉換為列表,列表推導式也可以用來建立列表,若干標準庫函式、內建型別方法以及擴充套件庫函式或方法也會返回列表。列表不能作為字典的“鍵”,也不能作為集合的元素。

  2. 元組(tuple):內建型別,不可變(或可雜湊),其中可以包含任意型別的資料,如果元組中只有一個元素,必須加一個逗號,例如(3,)。元組支援使用下標和切片訪問其中的某個或某些元素,支援運算子+、*。可以使用()直接定義元組,也可以使用tuple()把其他可迭代物件轉換為元組,若干標準庫函式、內建型別方法以及擴充套件庫方法或方法也會返回元組。元組可以作為字典的“鍵”或者集合的元素,但是如果元組中包含列表、字典、集合或其他可變物件,就不能作為字典的“鍵”和集合的元素了。

  3. 字典(dict):內建型別,常用於表示特定的對映關係或對應關係,可變(不可雜湊),元素形式為“鍵:值”,其中“鍵”必須是可雜湊型別的資料且不重複。如果建立字典時指定的“鍵”有重複,只保留最後一個,例如執行語句x = {'a': 96, 'b': 98, 'c': 99, 'a': 97}後x的值為{'a': 97, 'b': 98, 'c': 99}。

  4. 集合(set):內建型別,可變(不可雜湊),其中每個元素都必須可雜湊且不會重複。

  5. 字串(str):內建型別,可雜湊(不可變),可以是空字串或包含任意多個任意字元的物件,使用單引號、雙引號、三單引號、三雙引號作為定界符,不同定界符之間可以巢狀。在字串前面加字母r或R表示原始字串,加字母f或F表示對其中的佔位符進行格式化,可以在一個字串前面同時加字母r和f(不區分大小寫)。

  6. 下標(subscript):對於列表、元組、字串和range物件,可以使用整數作為下標來訪問指定位置或序號的元素,例如x[0]。第一個元素的下標是0,第二個元素的下標是1,以此類推;如果使用負整數作下標的話,最後一個元素的下標為-1,倒數第二個元素的下標為-2,以此類推。對於字典,可以使用“鍵”作下標,返回對應元素的“值”。

  7. 切片(slice):用來訪問列表、元組、字串和range中部分元素的語法,完整形式為[start:stop:step],其中start、stop、step的含義與range()函式的引數相同。例如,'abcdefg'[:3]的結果為'abc'。

  8. 運算子(operator):用來表示特定運算的符號,例如+表示加法運算、-表示減法或相反數或差集運算、*表示乘法運算、/表示真除法、//表示整除運算、**表示冪運算,>、<、>=、<=、==、!=表示關係運算,and、or、not表示邏輯運算,&、|、^、>>、<<、~表示位運算(其中前三個還可以表示集合運算),[]表示下標或切片,另外還有in、is、@、:=(Python 3.8新增)運算子。

  9. 表示式(expression):單個常量、變數以及若干常量、變數使用運算子或函式呼叫組成的式子都是合法表示式。表示式作為內建函式bool()的引數時如果返回True,那麼這樣的表示式作為條件表示式時表示條件成立。

  10. 動態型別(dynamic type):在Python中,不需要宣告變數的型別,第一次給某個變數賦值的語句會建立變數,每次重新賦值時會根據等號右側表示式值的型別來動態改變變數的型別。

  11. 解釋型語言(interpreted language):Python程式不需要編譯和連結為可執行程式,原始碼就可以由Python直譯器直接解釋執行。

  12. 偽編譯(pseudo compilation):Python源程式可以通過多種方式偽編譯為.pyc格式的位元組碼檔案,Python直譯器也可以直接解釋和執行位元組碼檔案。

  13. 迭代器物件(iterator):同時具有特殊方法__next__()和__iter__()的物件,這類物件具有惰性求值特點,不能直接檢視其中的內容,也不支援使用下標和切片訪問其中的元素,可以把迭代器物件轉換為列表、元組、集合,也可以使用for迴圈直接遍歷其中的元素,或者使用內建函式next()獲取迭代器物件中的下一個元素。不論使用哪種方式,每個元素只能使用一次。map物件、zip物件、enumerate物件、filter物件、reversed物件、生成器物件都屬於迭代器物件。

  14. 可迭代物件(iterable):具有特殊方法__iter__()的物件,可以使用for迴圈遍歷其中的元素。列表、元組、字典、集合、字串、以及各種迭代器物件都屬於可迭代物件。

  15. 可雜湊物件(hashable object):可以計算雜湊值的物件,概念等價於不可變物件。列表、字典、集合這樣可以增加元素、刪除元素、修改元素的物件屬於不可雜湊物件,元組、字串這樣的不可變物件屬於可雜湊物件。可以使用內建函式hash()計算一個物件的雜湊值,如果試圖計算不可雜湊物件的雜湊值會丟擲異常。

  16. 列表推導式(list comprehension):語法形式為[expr for var in iterable if condition],計算結果為一個列表,可用於對iterable中的元素進行計算或過濾。

  17. 生成器表示式(generator expression):語法形式為(expr for var in iterable if condition),計算結果為一個生成器物件,生成器物件屬於迭代器物件,具有惰性求值特點,不支援下標、切片,只能從前向後逐個訪問其中的元素,且其中每個元素只能使用一次。

  18. 字典推導式(dict comprehension):形如{key:value for key, value in iterable}這樣的推導式,其中iterable中每個元素為包含兩個元素的元組,並且每個元組的第一個元素為可雜湊物件。字典推導式的結果為字典。

  19. 集合推導式(set comprehension):形如{item for item in iterable}這樣的推導式,其中iterable中每個元素都是可雜湊物件。集合推導式的結果為集合。

  20. 生成器物件(generator object):可以使用生成器表示式和生成器函式得到生成器物件。

  21. 關鍵字(keyword):Python中具有特殊含義和用途的單詞,不能用作變數名或其他用途。可以使用from keyword import kwlist匯入之後使用print(kwlist)檢視所有關鍵字,例如if、else、for、while、break、continue、return、from、import等。

  22. 函式(function):和數學上函式的概念類似,表示一種變換或處理,可以接收0或多個輸入(引數),給出1(可能為空值)或多個輸出(需要放在可迭代物件中整體返回)。

  23. 內建函式(builtin function):封裝在Python直譯器中,啟動Python即可使用,不需要匯入任何標準庫或擴充套件庫。可以使用dir(__builtins__)檢視所有內建物件,其中包含全部內建函式,例如sum()、open()、len()、map()、filter()、enumerate()等。

  24. 自定義函式(function):可以使用關鍵字def或lambda定義,實現對程式碼的封裝和重複使用。

  25. 遞迴函式:如果一個函式的程式碼中又呼叫這個函式自己,這樣的函式叫遞迴函式。定義遞迴函式時應使得每次遞迴呼叫時問題性值不變但問題規模越來越小,小到一定程度時直接解決問題,不再遞迴。

  26. 生成器函式(generator function):包含yield語句的函式,這樣的函式呼叫時不是返回一個值,而是返回生成器物件。

  27. 修飾器(decorator):一種特殊的函式,接收一個函式作為引數,對其功能進行補充或增強或限制,返回一個新函式。

  28. 可呼叫物件(callable object):可以像函式一樣的呼叫的物件,包括函式、lambda表示式、類(實際是呼叫的構造方法)、類方法、靜態方法、物件的成員方法、定義了特殊方法__call__()的類的物件。

  29. lambda表示式(lambda expression):一種常用來定義匿名函式(沒有名字的函式)的語法,功能相當於函式,屬於可呼叫物件,常用於內建函式max()、min()、sorted()、map()、filter()以及標準庫functools的函式reduce()的引數。在功能上,lambda x: x+5相當於接收一個數字然後加5返回的函式。也可以給lambda表示式起名字定義具名函式(具有名字的函式),func = lambda x, y: x+y相當於def func(x, y): return x+y。

  30. 位置引數(positional argument):呼叫函式時嚴格按位置和順序進行傳遞的引數,例如sorted(data, key=str)中的引數data。

  31. 關鍵引數(keyword argument):呼叫函式時明確說明哪個實參傳遞給哪個形參,例如sorted(data, key=str)中的引數key。

  32. 可變長度引數:有def func(*p)和def func(**p)兩種形式,前者可以接收任意多個位置引數並放入元組p中,後者可以接收任意多個關鍵引數並放入字典p中,元組或字典中元素數量取決於實參的數量。

  33. 全域性變數(global variable):如果一個變數的第一次賦值語句不在任何函式內部,那麼它是全域性變數。另外,在函式內部可以使用關鍵字global直接宣告一個變數為全域性變數。

  34. 區域性變數(local variable):在函式內部建立且沒有使用關鍵字global宣告的變數。

  35. 變數作用域(variable scope):變數起作用的程式碼範圍。在Python中,變數自定義開始,直到當前函式或檔案結束,都是可以使用的,除非被宣告為全域性變數或者被更小的作用域內同名變數暫時隱藏。

  36. 閉包作用域(enclosing scope):在Python中允許巢狀定義函式,也就是一個函式的定義中可以再定義函式。在內層函式中可以直接使用父函式中區域性變數的值,但是如果要在內層函式中修改父函式中區域性變數的值,必須使用關鍵字nonlocal宣告該變數繫結到距離最近的父函式中已經存在的區域性變數。

     

  37. 序列解包(sequence unpacking):同時給多個變數賦值的語法,要求等號左側變數的數量和等號右側值的數量或者可迭代物件中元素數量嚴格一致。

  38. 星號表示式(star expression):也屬於序列解包的用法,在可迭代物件前面加一個星號表示把其中的元素都取出來,常見於把可迭代物件中的全部元素作為函式的位置引數的場合,例如print(*'abc')。

  39. 類(class):使用關鍵字class定義,是對某些具有相似特徵和行為的物件的抽象。如果在類中定義了__call__()特殊方法,那麼該類的所有物件都是可呼叫物件,可以像函式一樣呼叫。在類中重新實現__add__()等特殊方法,可以實現對運算子或內建函式的支援。

  40. 方法(method):形式類似於函式,表示特定的行為或運算,必須通過類或物件來呼叫,後者用的更多一些。一般來說,方法直接作用在呼叫方法的物件上,函式必須指定要操作的物件;自定義類時,屬於物件的成員方法的第一個引數(一般名為self)表示物件自己,屬於類的方法第一個引數(一般名為cls)表示類自己,都不需要顯式傳遞,是呼叫時隱式繫結和傳遞的。可以使用修飾器把成員方法宣告為屬性。

  41. 資料成員(data member):在類中用來表示事物特徵(例如人的身份證號、姓名、性別、出生日期,教材的ISBN、CIP、書名、作者、出版社)的變數,定義或使用時需要使用self作字首。

  42. 模組(module):包含若干函式、類、常量的Python程式檔案。

  43. 包(package):包含若干Python程式檔案的資料夾,且其中有一個檔名為__init__.py。

  44. 內建模組(built-in module):隨同Python安裝包一起安裝,封裝在Python直譯器中,不存在獨立的Python程式檔案。

  45. 標準庫(standard library):隨同Python安裝包一起安裝的Python程式檔案,需要匯入之後才能使用其中的物件,所有標準庫對應的Python程式檔案位於Python安裝目錄中的Lib子資料夾。

  46. 擴充套件庫(extension package):不隨Python安裝包一起安裝,可以根據需要使用pip安裝特定的擴充套件庫,所有擴充套件庫對應的檔案預設位於Python安裝目錄中的Lib\site-packages子資料夾。Python程式設計常見出錯資訊及原因分析(5):安裝擴充套件庫

  47. 異常(exception):程式碼執行時由於程式碼錯誤或某個條件臨時不滿足導致程式碼執行失敗,詳見Python程式設計常見錯誤表現形式與原因分析

  48. 語法錯誤(syntax error):存在語法錯誤的程式無法執行,例如縮排錯誤、在if選擇結構的條件表示式中誤用=運算子、在變數後面誤用++,等。

  49. 邏輯錯誤(logical error):程式可以執行但是結果不對。

 

 

溫馨提示:

關注微信公眾號“Python小屋”,在公眾號後臺傳送訊息“大事記”可以檢視董付國老師與Python有關的重要事件;傳送訊息“教材”可以檢視董付國老師出版的Python系列教材(已累計印刷超過100次)的適用專業詳情;傳送訊息“歷史文章”可以檢視董付國老師推送的超過1000篇原創技術文章;傳送訊息“會議”或“培訓”可以檢視近期董付國老師的培訓安排;傳送訊息“微課”可以檢視董付國老師免費分享的超過500節Python微課視訊;傳送訊息“課件”可以檢視董付國老師免費分享的Python教學資源;傳送訊息“小屋刷題”可以下載“Python小屋刷題神器”,免費練習1187道客觀題和120道程式設計題,題庫持續更新;傳送訊息“程式設計比賽”瞭解Python小屋程式設計大賽詳情。

相關文章