在大數(shù)據(jù)和人工智能時代,Python是一門舉足輕重的編程語言。本書通過漫畫講解Python,學(xué)習(xí)起來生動有趣,非常值得我們閱讀和學(xué)習(xí)。
如果你要學(xué)習(xí)編程,Python 就是你最好的選擇了,因?yàn)樗恼Z法相對于其他語言而言更加的簡單,很多時候,就算沒有學(xué)習(xí)過編程的人也能大致看明白程序想要做的事情。
我們學(xué)習(xí)一種編程語言,更多時候其實(shí)是學(xué)習(xí)一種語法,這種語法跟我們學(xué)英語時的語法沒有什么差別,都是要求你根據(jù)一定的規(guī)則去使用它,如果我們不按照英文的語法規(guī)則去講英語,大多數(shù)人都是聽不明白你在講什么的,編程也是相同的道理,如果你不按照規(guī)則去編寫程序,計(jì)算機(jī)也是不會明白你想要做什么的。
為什選它?
Python是一種非常接近自然語言的高級編程語言,因此易于學(xué)習(xí)和使用。Python被各行各業(yè)和包括Google在內(nèi)的公司使用,它被應(yīng)用于開發(fā)Web、桌面應(yīng)用系統(tǒng)管理和機(jī)器學(xué)習(xí)。Python在數(shù)據(jù)科學(xué)領(lǐng)域和機(jī)械學(xué)習(xí)社區(qū)是很受歡迎的語言。希望這些理由可以說服你開始學(xué)習(xí)Python這門語言。
💡 補(bǔ)充:在測試行業(yè)里很多自動化、工具也都在使用Python,如果沒有任何開發(fā)語言基礎(chǔ),簡單易學(xué)可以快速入門的它是非常不錯的選擇。
環(huán)境配置
安裝Python
運(yùn)行python腳本需要安裝依賴環(huán)境,讓我們從官方 https://www.python.org/downloads/ 進(jìn)行下載。
需要注意的是默認(rèn)下載頁面的版本,一般是最新的Release版本,如圖中的紅圈出是3.10.6,如果是純學(xué)習(xí)3.6+都可以,這里筆者為了兼容更好選擇了3.8.10版本,后續(xù)的代碼演示也會基于此版本。
下載歷史版本需要在 looking for specific release?里查找,比如Ctrl+F搜索到了Python 3.8.10,點(diǎn)擊對應(yīng)行的Download即會跳轉(zhuǎn)到下載頁面。
💡 Tips:圖中還可以看到3.8.11、12版本,這個兩個是后來的小版本升級,進(jìn)入download只有源碼包,沒有直接安裝包,所以為了方便安裝我們最終選定10版本。
如果你使用的是windows用戶,可以點(diǎn)擊圖中紅色框內(nèi)對應(yīng)系統(tǒng)位數(shù)版本下載,如果是Mac用戶選擇綠色框內(nèi)對應(yīng)os系統(tǒng)版本下載,其他linux系統(tǒng)則需要通過source版本配置。
安裝包方法進(jìn)行安裝比較簡單就省略了,如果有問題或者需要配置環(huán)境變量,網(wǎng)上安裝教程也很多,自行搜索解決下,這里當(dāng)python安裝好后讓我們啟動一個終端,通過命令行檢查下安裝情況。
python --version
# 如mac或系統(tǒng)有共存的2.7版本,需要通過python3查看
python3 --version
當(dāng)你看到版本信息的時候就證明python已經(jīng)在電腦上安裝好,如果你是其他版本也無妨,不影響接下來的學(xué)習(xí)。
Python Shell
Python是解釋型腳本語言,因此它不需要編譯,這意味著它將逐行執(zhí)行代碼。Python帶有一個Python Shell(交互式命令行)。它被用于執(zhí)行單行python命令并得到相應(yīng)結(jié)果。
python3 #python
此時python交互式shell已經(jīng)打開,并且等待你寫入代碼(python 腳本),在符號 >>>寫下你的代碼然后按下Enter回車鍵,那么接下來讓我們在python shell 寫下第一個腳本。
很好,在交互Shell控制臺上你已經(jīng)寫下了第一個腳本,簡單做了個加法計(jì)算2+3,并得到結(jié)果5輸出。那么如何關(guān)閉python shell呢?要退出只需要在符號>>>輸入 exit()命令并且按下回車鍵即可。
到現(xiàn)在為止,你已經(jīng)知道如何打開Python shell 以及如何退出它了。如果你寫下的代碼能被python正確解讀,它將返回一個結(jié)果,否則將看到一個錯誤。讓我們故意制造一個錯誤來看看它是如何返回的。
正如你看到返回的錯誤,Python很聰明,它發(fā)現(xiàn)了一個 Syntax Error: invalid syntax 錯誤。使用了錯誤的乘法語法,因?yàn)樵趐ython中(x)不是一個有效關(guān)鍵詞,要實(shí)現(xiàn)乘法計(jì)算,我們需要使用(*)來替換(x)。返回的錯誤很明顯地展示了如何修復(fù)它。
從程序中找到錯誤并移除它的過程叫 **調(diào)試**,接下來讓我們用 * 替換掉 x 通過調(diào)試來修復(fù)錯誤。
我們的bug此時已經(jīng)被正確修復(fù),代碼正常運(yùn)行并得到預(yù)期的結(jié)果(2乘3等于6)。作為一名程序員在每天的編程中你都會遇到這樣那樣的錯誤。知道如何調(diào)試問題是一件好事。為了更好調(diào)試你應(yīng)該了解常見的錯誤的類型。你將來可能會遇到的一些Python錯誤類型包括但不限于 _SyntaxError、IndexError、NameError、ModuleNotFoundError、KeyError、ImportError、AttributeError、TypeError、ValueError、ZeroDivisionError _等。在后續(xù)的實(shí)戰(zhàn)中將會看到更多不同的 錯誤類型信息。
讓我們繼續(xù)在Python shell 做一些練習(xí),回到終端并次進(jìn)入交互模式,不要忘記進(jìn)入命令是python或python3。
在Python shell模式下,我們先進(jìn)行一些基礎(chǔ)的數(shù)學(xué)運(yùn)算操作(加法、減法、乘法、除法、取模、指數(shù))。
編寫正式pyton代碼之前先做一些數(shù)學(xué)計(jì)算:
3 + 7 = 10
7 - 2 = 5
2 * 6 = 12
3 / 2 = 1.5
3 ** 2 = 3 x 3 = 9
再在做一些而外的操作:
5 % 2 = 1 取模即求余數(shù)
5 // 2 = 2 地板除即求商
接下來讓我們把上邊的數(shù)學(xué)練習(xí)轉(zhuǎn)成python代碼。不過在這之前我們先在打開的python shell開頭寫下注釋。注釋 在python代碼中是不被執(zhí)行的,所以我們可以在合適的地方增加一些文字說明來增加代碼可讀性。python 中單行注釋以 hash(#)符號開頭。以下演示和如何在python寫注釋
# 注釋以hash開頭
# 這是一個python的注解,因?yàn)樗_頭用了符號(#)
在繼續(xù)下一節(jié)之前,讓我們在Python shell 做更多的練習(xí)。通過exit()命令退出shell模式,然后再重新打開并嘗試編寫一些字符交互。
完成上邊的學(xué)習(xí)和練習(xí),讓我們進(jìn)入下一部分:安裝編輯器來進(jìn)行代碼編寫。
使用Visual Studio
Python shell 非常適合嘗試和測試小型腳本代碼,但不適合大型項(xiàng)目開發(fā)。在實(shí)際工作環(huán)境中,開發(fā)人員使用不同的代碼編輯器進(jìn)行代碼編寫。在這30天的python編程學(xué)習(xí)挑戰(zhàn)中,我們將使用非常流行的開源的Visual Studio代碼編輯器,推薦使用官方https://code.visualstudio.com/最新版本。當(dāng)然如果電腦上已經(jīng)有其他的編輯器,根據(jù)你的個人情況進(jìn)行選擇。
💡 Tips:VS Code是一個非常不錯的開源編輯器,雖然商國內(nèi)商業(yè)版的Pycharm用的更多,但如果沒你沒有商業(yè)Key非常不建議花大量的時間取折騰一個IDE,編程學(xué)習(xí)重要的是學(xué)習(xí)語言語法和應(yīng)用。
假設(shè)你已經(jīng)下載并安裝好了VS Code IDE,讓我們來看下是如何使用它。
如何使用VS Code
通過桌面或者應(yīng)用程序里點(diǎn)擊Visual Stuido圖標(biāo)啟動,當(dāng)你打開它時你將看到這樣的默認(rèn)歡迎界面,你可以去掉勾選 show welcome page on startup 關(guān)閉,這樣在每次啟動后將不再出現(xiàn)。
💡 Tips:由于網(wǎng)絡(luò)原因可能網(wǎng)站打不開或或者下載失敗,可以搜下已下載安裝包或者找聯(lián)系我發(fā)送你對應(yīng)的包。
此時你可以打開現(xiàn)有項(xiàng)目,從git倉庫中clone項(xiàng)目,也可以新建一個文件夾或文件。在電腦中合適的位置我們創(chuàng)建一個文名稱為 30DaysOfPython 文件夾,然后使用Visual Studio打開它。如果提示信任警告,請選擇Yes。
打開項(xiàng)目文件夾后,在展開項(xiàng)目并且鼠標(biāo)放在上邊的時候會快捷按鈕,正如中所示,我已經(jīng)通過創(chuàng)建文件按鈕,創(chuàng)建了一個helloworld.py嘗試完成你的創(chuàng)建。
事實(shí)上VS Code是支持多語言的,在對應(yīng)區(qū)域下載默認(rèn)會帶有本地語言包,如果沒有你可以通過切換到插件商店,搜索chinese安裝進(jìn)行安裝。
如果沒安裝或沒完全中文化,可以通過快捷鍵Command + Shift + P(Window為Ctrl + Shift +P)打開命令配置,輸入"configure language" 選中語言顯示配置->zh-cn重新配置。
重啟后你就能看到全中文界面。
恭喜你,你已經(jīng)完成開發(fā)環(huán)境的配置,讓我們開始進(jìn)行編碼吧。
Python基礎(chǔ)
代碼可以在Python shell 或者IDE中編寫。它的文件擴(kuò)展名為.py
縮進(jìn)
在文本中一個縮進(jìn)是空白,許多語言中縮進(jìn)用于增加代碼的可讀性,不過Python中用來創(chuàng)建代碼塊。其他語言中(如Java)通常用括號創(chuàng)建代碼塊。編寫python代碼時常見的錯誤之一就是錯誤的縮進(jìn)。
注釋
在我們編寫的代碼中注釋是非常重要,它使得代碼變得更易讀。Python中任何行以(#)開頭的是一行注釋,它在代碼運(yùn)行時候是不會被執(zhí)行的。
示例:單行注釋
# 這是第一行注釋
# 這是第二行注釋
# Python是很受歡迎的語言
示例:多行注釋使用三個引號將文本引用以來,它將是一個多行的注釋
"""這是多行注釋
它可以進(jìn)行換行.
Python變得越來越流行
"""
數(shù)據(jù)類型
在Python中有幾種數(shù)據(jù)類型,讓我們從最常見一些開始學(xué)習(xí)。不同的數(shù)據(jù)類型在其他章節(jié)中得到詳細(xì)講解。目前來講,先讓我們來來了解下都有哪些數(shù)據(jù)類型,再次說明下,你現(xiàn)在無需立馬弄懂每個類型。
數(shù)字
整數(shù)int:整數(shù)(負(fù)、零和正)示例:... -3、-2、-1、0、1、2、3 ...
浮點(diǎn)數(shù)float:十進(jìn)制數(shù) 示例 ... -3.5, -2.25, -1.0, 0.0, 1.1, 2.2, 3.5 ...
復(fù)雜complex 示例 1 + j, 2 + 4j
字符串str
單引號或雙引號里的一個或者多個字的集合。如果字符串多于一個句子或多行,則使用三個引號。
'Hi'
'MegaQi'
'Python'
'我喜歡教學(xué)與分享'
'I hope you are enjoying the first day of 30DaysOfPython Challenge'
布爾bool
布爾類型只有兩個值 True 或 Flase,注意 T 和 F 始終是大寫。
True # 邏輯舉例:燈亮著嗎? 如果它是開的,則值為 True
False # 燈亮著嗎?如果關(guān)閉,則值為 False
列表List
Python list 是一個有序集合,它允許存儲不同的數(shù)據(jù)類型項(xiàng)。類似于 JavaScript 中的數(shù)組。
# 所有類型均為數(shù)字
[0, 1, 2, 3, 4, 5]
# 所有項(xiàng)都是字符串類型(水果)
['香蕉', '橙子', 'Mango']
# 混合類型,包括了字符、整數(shù)、布爾和浮點(diǎn)
['芒果', 10, False, 9.81]
字典dict
Python 字典對象是鍵值對格式的無序數(shù)據(jù)集合。
{
'name':'大奇',
'country':'中國',
'age':35,
'is_married':True,
'skills':['Python', 'React', 'Node', 'Java', 'Vue']
}
元組tuple
元組也是一個有序集合,但它不同于List。元組一旦創(chuàng)建就不能修改,它們是不可變的。
# 七大行星
('地球', '木星', '海王星', '火星', '金星', '土星', '天王星', '水星')
集合set
集合是類似于列表和元組的數(shù)據(jù)類型的集合。與列表和元組不同,集合項(xiàng)不是有序的。與數(shù)學(xué)一樣,set在python 僅保存不重復(fù)的值。
{2, 4, 3, 5}
{3.14, 9.81, 2.7} # 在set中順序并不重要
查看數(shù)據(jù)類型
要檢查某些數(shù)據(jù)/變量的類型,我們使用type函數(shù)。在以下Python shell中,你將看到不同的 python 數(shù)據(jù)類型:
image.png
Python文件
假設(shè)已經(jīng)創(chuàng)建好了python學(xué)習(xí)文件夾,如名為 30DayOfPython,但如果沒有請通過編輯器創(chuàng)建它。并且在此文件夾中,創(chuàng)建一個名為helloworld.py的文件。現(xiàn)在讓我們在Visual Studio上看下是如何進(jìn)行代碼交互的。
Python Shell中打輸出結(jié)果時沒用使用print打印,但在VS Code中要看到結(jié)果需要使用*print()函數(shù),print()括號內(nèi)接受一個或多個參數(shù),參考形式如 print('參數(shù)1','參數(shù)2')。具體可以看下邊的例子。
例子(文件為helloworld.py)
# Day 1 - 30天Python學(xué)習(xí)挑戰(zhàn)
# 數(shù)據(jù)計(jì)算
print(3 + 7) # 加 addition(+)
print(7 - 2) # 減 subtraction(-)
print(2 * 6) # 乘 multiplication(*)
print(3 / 2) # 除 division(/)
print(3 ** 2) # 次方 exponential(**)
print(5 % 2) # 求余 modulus(%)
print(5 // 2) # 求商 Floor division operator(//)
# 打印數(shù)據(jù)類型
print(type(10)) # 整數(shù) Int
print(type(3.14)) # 浮點(diǎn) Float
print(type(1 + 3j)) # 復(fù)數(shù) Complex number
print(type('MegaQi')) # 字符串 String
print(type([1, 2, 3])) # 列表 List
print(type({'名稱':'大奇'})) # 字典 Dictionary
print(type({9.8, 3.14, 2.7})) # 集合 Set
print(type((9.8, 3.14, 2.7))) # 元組 Tuple
要運(yùn)行python文件,請參考下圖。
方式1:通過點(diǎn)擊VS Code上的三角▶️按鈕運(yùn)行
方式2:在編輯底部打開的終端上輸入 python3 helloworld.py 來運(yùn)行
💡 提示:如果沒顯示終端,依次通過編輯器菜單->終端->新建終端 打開。
你太棒了,你已經(jīng)完成了第1天的挑戰(zhàn),并且正在成功的路上前進(jìn)。現(xiàn)在趁熱做一些練習(xí)吧,來加強(qiáng)大腦和肌肉記憶。
1.2 Python的特點(diǎn)
1.3 搭建Python開發(fā)環(huán)境
1.4 動動手 —— 編寫和運(yùn)行一個Hello World程序
2.1 標(biāo)識符
2.2 關(guān)鍵字
【Python教程】看漫畫學(xué)python | 由入門到精通教程(2.3 變量)
【Python教程】看漫畫學(xué)python | 由入門到精通教程(2.4 語句)
2.5 代碼注釋
2.7 動動手 —— 實(shí)現(xiàn)兩個模塊間的代碼元素訪問
3.1 Python中的數(shù)據(jù)類型
3.2 整數(shù)類型
3.3 浮點(diǎn)類型
3.4 復(fù)數(shù)類型
3.5 布爾類型
3.6 數(shù)字類型的相互轉(zhuǎn)換
4.1 算術(shù)運(yùn)算符
4.3 邏輯運(yùn)算符
4.4 位運(yùn)算符
4.5 賦值運(yùn)算符
4.6 運(yùn)算符的優(yōu)先級
5.1.1 if 結(jié)構(gòu)
5.1.3 if-else-if 結(jié)構(gòu)
5.2.1 while 語句
5.2.2 for 語句
5.3 跳轉(zhuǎn)語句
6.1.1 序列的索引操作
6.1.2 加和乘操作
6.1.3 切片操作
6.1.4 成員測試
6.2.1 創(chuàng)建列表
6.2.2 追加元素
6.2.3 插入元素
6.2.5 刪除元素
6.3.1 創(chuàng)建元組
6.3.2 元組拆包
6.4.1 創(chuàng)建集合
6.4.2 修改集合
6.5.1 創(chuàng)建字典
6.5.2 修改字典
6.5.3 訪問字典視圖
7.1.1 普通字符串
7.1.2 原始字符串
7.1.3 長字符串
7.2.2 將數(shù)字轉(zhuǎn)換為字符串
7.2.3 變量
7.3.1 使用占位符
7.3.2 格式化控制符
7.4.1字符串查找
7.4.2 字符串替換
7.4.3 字符串分割
8.1 定義函數(shù)
8.2.1 使用位置參數(shù)調(diào)用函數(shù)
8.2.2 使用關(guān)鍵字參數(shù)調(diào)用函數(shù)
8.3 參數(shù)的默認(rèn)值
8.4.1 基于元組的可變參數(shù)
8.4.2 基于字典的可變參數(shù)
8.5 函數(shù)中變量的作用域
8.6.1 理解函數(shù)類型
8.6.3 映射函數(shù)map
8.7 lambda函數(shù)
9.1 面向?qū)ο?/p>
9.2 定義類
9.3 創(chuàng)建對象
9.4 類的成員
9.4.1 實(shí)例變量
9.4.2 構(gòu)造方法
9.4.3 實(shí)例方法
9.4.4 類變量
9.4.5 類方法
9.5.1 私有變量
9.5.2 私有方法
9.5.3 使用屬性
9.6.1 Python 中的繼承
9.6.2 多繼承
9.6.3 方法重寫
9.7 多態(tài)性
9.7.1 繼承與多態(tài)
9.7.2 鴨子類型測試與多態(tài)
10.1 第一個異常 —— 除零異常
10.2.1 try-except 語句
10.2.2 多個except代碼塊
10.2.3 多重異常捕獲
10.2.4 try-except語句嵌套
10.3 使用finally代碼塊釋放資源
10.4 自定義異常類
10.5 動動手 —— 手動引發(fā)異常
11.1 數(shù)學(xué)計(jì)算模塊 —— math
11.2.1 datetime 類
11.2.1 datetime類常用方法
11.2.2 date 類
11.2.3 time 類
11.2.4 計(jì)算時間跨度類 —— timedelta
11.2.5 將日期時間與字符串相互轉(zhuǎn)換
11.3 正則表達(dá)式模塊
11.3.1 字符串匹配
11.3.2 字符串查找
11.3.3 字符串替換
11.3.4 字符串分割
12.1 打開文件
12.2 關(guān)閉文件
12.3 讀寫文本文件
12.4 動動手 —— 復(fù)制文本文件
12.5 讀寫二進(jìn)制文件
12.6 動動手 —— 復(fù)制二進(jìn)制文件
13.1 Python中的圖形用戶界面開發(fā)庫
13.2 安裝wxPytho
13.3 第一個wxPython程序
13.4 自定義窗口類
13.5 在窗口中添加控件
13.6 事件處理
13.7.1 盒子布局管理器
13.7.2 動動手 —— 重構(gòu)事件處理示例
13.7.3 動動手 —— 盒子布局管理器嵌套示例
13.8.1 文本輸入控件
13.8.2 復(fù)選框和單選按鈕
13.8.3 列表
13.8.4 靜態(tài)圖片控件
14.1 基本的網(wǎng)絡(luò)知識
14.2 搭建自己的Web服務(wù)器
14.3.1 發(fā)送GET請求
14.3.2 發(fā)送 POST 請求
14.4 JSON數(shù)據(jù)
15.1 SQLite數(shù)據(jù)庫
15.2 數(shù)據(jù)庫編程的基本操作過程
15.4.1 示例中的數(shù)據(jù)表
15.4.3 有條件查詢
15.4.4 插入數(shù)據(jù)
15.4.5 更新數(shù)據(jù)
15.4.6 刪除數(shù)據(jù)
16.1 線程相關(guān)的知識
16.2 線程模塊 —— threading
16.3 創(chuàng)建子線程
16.3.1 自定義函數(shù)實(shí)現(xiàn)線程體
16.3.2 自定義線程類實(shí)現(xiàn)線程體
16.4.2 線程停止


