- Python之光:Python編程入門與實戰
- 李慶輝
- 3903字
- 2023-11-13 15:11:05
1.2 Python快速入門
從現在開始,我們就要進行Python編程了。在本節,你不需要知道我們編寫的代碼計算機是怎么執行的,只要關注代碼邏輯就可以了。我們通過一個個重要的知識點,如百米沖刺般沖向Python,并擁抱它。
接下來,你將看到Python的基礎語法,不需要動手寫代碼。如果你想跟著筆者編寫本節的代碼,記得去1.3節看看如何安裝Python。
1.2.1 print()
print()是Python的一個內置函數。學習Python,你第一個要學會的就是print(),因為它可以讓你輸出程序員橫空出世的第一聲“啼哭”:“hello world!”。

以上代碼的執行成功宣示著這個世界上又多了一位程序員。不過,在交互式編程環境下,我們并不需要借助print()來輸出信息:

因此,在交互式編程環境下,我們盡量不用或者少用print(),畢竟需要多打那么多字。但無論在腳本執行還是交互式編程環境下,想輸出過程數據,還是需要借助print()。比如,在for循環中,如果想看到每次循環處理的數據結果,就要使用print()。
print()可以輸出多個內容,我們只要在括號內用英文逗號將它們隔開就行。還可以寫一個sep并讓它“等于”一個字符,就會用這個字符把它們連接起來:

最后一行代碼中的\n是換行的意思。如果兩個print()一起執行,數據會顯示在兩行上,如果讓end“等于”一個字符,上一行輸出的值與下一行輸出的值會用這個字符連接起來:

鑒于我們剛開始學習,不能介紹太多關于print()的用法,如果你已經有一定的Python基礎了,可以通過https://www.gairuo.com/p/python-print瀏覽它的更多功能。
1.2.2 基本數據類型
數據是計算機存儲和處理的基本信息單元,它將我們要解決的原始問題素材以一定的結構形式抽象。Python內置定義了一些常見的數據結構形式,再通過這些數據結構衍生出眾多的數據結構。
Python內置的不需要借助內部或者外部庫的數據類型稱為基本數據類型,主要有數字、字符串、布爾、元組、列表、字典和集合等。表1-1給出了這些數據類型的說明與示例。
表1-1 Python的基本數據類型

以上七大基本數據類型構成了Python編程的數據基座,也是執行效率最高的數據類型,它們的特性和支持的操作可以幫助我們解決很多現實問題,今后我們在自己定義的數據類型中會用到它們。
這里需要說明的是常用的布爾類型的True和False以及空類型的唯一值None。布爾類型表示邏輯真假,是數字類型的子類型,僅兩個值,即True和False,參與數字計算時分別按1和0處理。None是Python的一個特殊類型,它是一個常量,經常表示數據中的缺失值或者不存在的值。
關于Python完整的數據類型系統以及各個類型支持的操作,我們將在后文詳細介紹。
1.2.3 構造基本數據
由于基本數據類型會經常用到,為方便起見,Python可以讓我們直接寫出這些數據,或者提供了一些內置的函數來幫助我們構造這些類型的數據。接下來,我們在交互式編輯器中嘗試定義這些數據。
直接寫出數字就能構造相應的數字類型,也可以用內置的函數來構造數字類型:

字符串用引號包裹字符內容,也可以用內置函數str()來構造:

布爾類型直接寫True和False,或者用內置函數bool()將其他類型轉為布爾類型:


元組用圓括號包裹所有元素,元素之間用英文逗號分隔,如果只有一個元素,逗號不能省略。也可以用內置函數tuple()來構造元組。

列表和元組類似,但它用方括號包裹,可以用list()函數構造:

字典的每個元素是由鍵值對構成的,鍵與值用冒號分隔,每個元素用英文逗號分隔,最外層用花括號包裹。還有一種方法是用內置函數dict()中鍵值組成的“等式”來構造。

集合中的元素不能重復,如果指定的值有重復,它會舍棄重復的值。集合也用花括號包裹,但它與字典不同的是每個元素沒有鍵值結構。內置函數set()是構造集合的方法。


以上是基本數據類型的構造方法,要特別注意它們返回時的樣子,熟練掌握基本數據類型對于我們繼續學習非常重要。
1.2.4 賦值
有些數據非常大,為了方便操作這些數據,同時也為了引用更多的對象(指Python對象,這是一個面向對象編程中的概念,我們后面會反復提到),Python可以為數據起一個名字,后續在使用數據的時候只要提及這個名字就可以了。給數據(對象)起名字的過程叫作賦值。
我們來看以下操作:

a和b分別是數字1和2的名字,兩個等號并不是數學中的等于,而是賦值操作,a=1是一個賦值表達式。在后面的加法操作中直接使用a和b就可以分別引用數字1和2,得到最終的計算結果。
此外,名字引用的數據并不是一成不變的,可以隨時為其賦其他的數據,還可以將計算后的結果賦值給它們,甚至可以將名字賦值給其他名字。見以下代碼:

這些名字又稱為變量,它們自身并不存儲數據,只是指向所賦值的數據。命名有一定的要求,一般由非數字開頭的英文字母、數字、下劃線(_)組成,如果包含幾個單詞則用下劃線連接,因為名字不能包含空格。
1.2.5 注釋
注釋是以井號(#)開頭的內容,可以在行首,也可以在行中,井號后面至行末尾的所有內容就是注釋的內容。Python不會執行注釋里的內容。
注釋的目的是告訴別人和自己(沒錯,因為人會遺忘)代碼是干什么的,在上述構造數據類型的代碼中,我們使用了大量的注釋,包括交互模式中返回的內容我們也用井號標為注釋。
注釋還有個應用就是將暫時不用的代碼注釋掉以備后面使用,這在我們編寫代碼時非常有用。
以下代碼顯示了以上這幾種場景:

要注意的是,Python只有單行注釋,沒有多行注釋。以上代碼開頭用三引號包裹的代碼介紹文字并不是注釋,而是一個多行字符串,Python會執行,只是我們沒有給它起名字,后續不容易引用它。
1.2.6 流程控制
如果只有數據,那么程序就是一潭死水,無法實現我們要實現的邏輯。各種程序算法都需要按一定的流程對數據進行操作。Python提供了多種流程控制機制,讓我們能夠對數據方便地進行操控。表1-2列出了常用的流程控制操作。
表1-2 Python的流程控制操作

靈活使用Python中的流程處理方法,能夠讓我們隨心所欲地處理各種數據,完成復雜的操作。接下來我們快速感受一下這些操作。
if else是基礎的流程控制語句,它的功能是如果滿足一定的條件則進行對應的操作,例如:

for循環對多個元素的內容一一進行處理,直到全部處理完。例如以下的range()函數是Python內置的從0開始的一個等差數列,for循環對其值一一處理,丟棄大于5的內容:

while建立一個循環,在滿足條件的情況下會無休止地執行循環,直到不滿足條件時才停止。以下程序在每一次循環中會對年齡增加1,當年齡不滿足條件“小于12歲”時停止執行,跳出循環。

break可以跳出循環。我們將上述代碼寫成一個死循環,然后設置條件跳出這個死循環,代碼如下:

當age大于11的時候,程序跳出了這個死循環,停止執行。
continue可以跳過本次循環,進入下一次循環:

break和continue除了在while循環中使用外還可以應用在其他類型的循環中。pass表示不做任何事情,也可以在編寫代碼時用于占位,后期再編寫對應位置的代碼。
while很容易編寫出死循環,因此對于有限長度的數據盡量用for循環來進行迭代。當然,很多應用程序其實是死循環,比如在電腦或者手機上運行的界面程序,除非你點擊關閉按鈕或者讓它退到后臺,否則它會永遠執行下去,這時候還是需要用while來編寫。
match case模式匹配是一個較新的功能,在后文中我們將詳細介紹。
1.2.7 函數
函數是真正的工具,它能夠幫助我們重復處理數據,就像計算器一樣,無論什么時候,只要我們輸入數字和符號,它總是能計算出結果。函數和數據一樣,也有一個名稱,有輸入的數據格式,即參數,還有按邏輯返回的結果,名稱、參數和返回結果是函數的三個重要元素。
Python內部提供了很多函數,前面講過的print()和range()以及構造數據類型的list()、str()、dict()等都可以認為是函數。調用函數時寫上函數的名稱然后寫一個括號,在括號里傳入參數,執行,就得到了函數的返回結果。
Python是用def關鍵字來定義函數的,比如我們定義一個加法計算器并調用:

用return關鍵字來引導函數返回的內容,如果不寫return語句,則返回的是None。
Python還允許定義匿名函數,也就是沒有名字的函數,這在一些簡單計算邏輯中很有用,可以讓我們快速給出計算規則。匿名函數由lambda關鍵字來定義,示例代碼如下:

上述代碼定義了一個函數,其中參數func是一個函數,用來定義參數a和b的計算方法,在調用這個函數時,由于我們的計算方法比較簡單,就使用匿名函數來定義計算方法。
1.2.8 類
Python中一切都是對象。這個說法你可能之前聽過,也可能這是第一次聽,但希望你時刻牢記這句話。對象(object)是一個非常抽象的概念,可以是一個數據結構、一個函數,甚至一段代碼。關于對象的概念我們將在后文中詳細介紹。
類(class)是產生對象的工具,或者可以稱作模板,就像我們做幻燈片時,最好有個幻燈片模板,這樣我們就能做出標準化的幻燈片,能夠保證制作幻燈片的效率。
Python使用關鍵字class來創建類,比如我們創建一個學生類,將來用這個類生成一個個具體的學生實例。

我們定義的學生類有一個姓名屬性,有say()和add()兩個方法,一個用來說話,一個用來做加法運算。接下來我們生成一個具體的學生實例,也就是所謂的實例化。

類還可以繼承(小學生繼承學生)、重寫方法(將加法重寫為10以內的加法)等,在今后的學習的我們會一一介紹。
1.2.9 模塊和包
Python自身提供了很多內置的模塊來增強其功能,而且眾多開發者還開發了數以百萬計的庫來解決各個領域的問題。
比如,要求一個弧度正弦值,Python內置的數學模塊math可以幫助我們,只要用import語句導入即可使用:

還可以在終端中通過pip命令安裝第三方庫,如通過pip install numpy命令安裝知名的矩陣運算庫來解決向量的計算問題。以下代碼用NumPy來完成向量的乘法:

在文件目錄下增加名為__init__.py的空文件,可作為包被導入使用。
1.2.10 小結
在本節,我們了解了Python的基礎能力,對Python的核心操作有了初步的認知。程序是由數據和算法組成的,Python為我們提供了7種基本數據類型,利用好這些基本數據類型,對于我們創建新的數據類型非常有幫助。
流程控制語句是程序的邏輯骨架,它可以串聯起數據,產生新的數據和操作,滿足我們對程序的控制。類是實現面向對象的特性的工具,它可以讓我們自己定義數據結構和功能,完成對現實問題的抽象。
本節中有些內容并不是很容易理解,但不用在意,這只是開始。有了初步的印象,我們就可以學習更深層次的Python內容。
- 自然語言處理實戰:預訓練模型應用及其產品化
- Spring 5.0 By Example
- Docker進階與實戰
- PyTorch自動駕駛視覺感知算法實戰
- Getting Started with CreateJS
- Troubleshooting PostgreSQL
- Building a Quadcopter with Arduino
- PhoneGap Mobile Application Development Cookbook
- FLL+WRO樂高機器人競賽教程:機械、巡線與PID
- Getting Started with Laravel 4
- 軟件測試實用教程
- C++20高級編程
- Python機器學習算法與應用
- Solutions Architect's Handbook
- Backbone.js Testing