Submit Search
Upload
4. 流程語法與函式
•
1 like
•
190 views
Justin Lin
Follow
認識基本流程語法 使用 for Comprehension 認識函式與變數範圍 運用一級函式特性 使用 yield 建立產生器 初探型態提示
Read less
Read more
Technology
Report
Share
Report
Share
1 of 76
Download now
Download to read offline
Recommended
7. 例外處理
7. 例外處理
Justin Lin
使用 try、except 處理例外 認識例外繼承架構 認識 raise 使用時機 運用 finally 清除資源 使用 with as 管理資源
例外處理
例外處理
Justin Lin
使用 try、except 處理例外 認識例外繼承架構 認識 raise 使用時機 運用 finally 清除資源 使用 with as 管理資源
流程語法與函式
流程語法與函式
Justin Lin
認識基本流程語法 使用 for Comprehension 認識函式與變數範圍 運用一級函式特性 使用 yield 建立產生器 初探型態提示
流程語法與函式
流程語法與函式
Justin Lin
《Python 3.5 技術手冊》第 4 章投影片
例外處理
例外處理
Justin Lin
《Python 3.5 技術手冊》第 7 章投影片
7. 錯誤處理
7. 錯誤處理
Justin Lin
認識throw使用時機 使用try-catch處理錯誤 處理Promise錯誤 結合await、await與try-catch
型態與運算子
型態與運算子
Justin Lin
《Python 3.5 技術手冊》第 3 章投影片
Java SE 8 技術手冊第 8 章 - 例外處理
Java SE 8 技術手冊第 8 章 - 例外處理
Justin Lin
使用try、catch處理例外 認識例外繼承架構 認識throw、throws的使用時機 運用finally關閉資源 使用自動關閉資源語法 認識AutoCloseable介面
Recommended
7. 例外處理
7. 例外處理
Justin Lin
使用 try、except 處理例外 認識例外繼承架構 認識 raise 使用時機 運用 finally 清除資源 使用 with as 管理資源
例外處理
例外處理
Justin Lin
使用 try、except 處理例外 認識例外繼承架構 認識 raise 使用時機 運用 finally 清除資源 使用 with as 管理資源
流程語法與函式
流程語法與函式
Justin Lin
認識基本流程語法 使用 for Comprehension 認識函式與變數範圍 運用一級函式特性 使用 yield 建立產生器 初探型態提示
流程語法與函式
流程語法與函式
Justin Lin
《Python 3.5 技術手冊》第 4 章投影片
例外處理
例外處理
Justin Lin
《Python 3.5 技術手冊》第 7 章投影片
7. 錯誤處理
7. 錯誤處理
Justin Lin
認識throw使用時機 使用try-catch處理錯誤 處理Promise錯誤 結合await、await與try-catch
型態與運算子
型態與運算子
Justin Lin
《Python 3.5 技術手冊》第 3 章投影片
Java SE 8 技術手冊第 8 章 - 例外處理
Java SE 8 技術手冊第 8 章 - 例外處理
Justin Lin
使用try、catch處理例外 認識例外繼承架構 認識throw、throws的使用時機 運用finally關閉資源 使用自動關閉資源語法 認識AutoCloseable介面
並行與平行
並行與平行
Justin Lin
《Python 3.5 技術手冊》第 13 章投影片
型態與運算子
型態與運算子
Justin Lin
認識內建型態 學習字串格式化 瞭解變數與運算子 運用切片運算
從模組到類別
從模組到類別
Justin Lin
《Python 3.5 技術手冊》第 5 章投影片
5. 建構式、原型與類別
5. 建構式、原型與類別
Justin Lin
認識建構式之作用 理解原型鏈機制 區別原型與類別典範 善用類別語法
CH08:例外處理
CH08:例外處理
Justin Lin
使用try、catch處理例外 認識例外繼承架構 認識throw、throws使用時機 運用finally關閉資源 使用自動關閉資源語法 認識AutoCloseable介面
從 REPL 到 IDE
從 REPL 到 IDE
Justin Lin
《Python 3.5 技術手冊》投影片第 2 章
從模組到類別
從模組到類別
Justin Lin
深入模組管理 初識物件導向 學習定義類別 定義運算子
資料永續與交換
資料永續與交換
Justin Lin
使用 pickle 與 shelve 認識 DB-API 2.0 使用 sqlite3 模組 處理 CSV、JSON、XML
4. 使用物件
4. 使用物件
Justin Lin
掌握this參考 運用物件實字 認識物件協定 使用符號協定
CH11:執行緒與並行API
CH11:執行緒與並行API
Justin Lin
認識Thread與Runnable 使用synchronized 使用wait()、notify()、notifyAll() 運用高階並行API
進階主題
進階主題
Justin Lin
《Python 3.5 技術手冊》第 14 章投影片
Java SE 7 技術手冊投影片第 08 章 - 例外處理
Java SE 7 技術手冊投影片第 08 章 - 例外處理
Justin Lin
Java SE 7 技術手冊
Java SE 8 技術手冊第 5 章 - 物件封裝
Java SE 8 技術手冊第 5 章 - 物件封裝
Justin Lin
瞭解封裝觀念與實現 定義類別、建構式與方法 使用方法重載與不定長度引數 瞭解static成員
12, string
12, string
ted-xu
Java tutorials - String
Java SE 8 技術手冊第 4 章 - 認識物件
Java SE 8 技術手冊第 4 章 - 認識物件
Justin Lin
區分基本型態與類別型態 瞭解物件與參考的關係 從包裹器認識物件 以物件觀點看待陣列 認識字串的特性
open() 與 io 模組
open() 與 io 模組
Justin Lin
使用 open()函式 使用 stdin、stdout、stderr 認識檔案描述器 認識 io 模組
8. open() 與 io 模組
8. open() 與 io 模組
Justin Lin
使用 open()函式 使用 stdin、stdout、stderr 認識檔案描述器 認識 io 模組
open() 與 io 模組
open() 與 io 模組
Justin Lin
《Python 3.5 技術手冊》第 8 章投影片
Java SE 8 技術手冊第 11 章 - 執行緒與並行API
Java SE 8 技術手冊第 11 章 - 執行緒與並行API
Justin Lin
認識Thread與Runnable 使用synchronized 使用wait()、notify()、notifyAll() 運用高階並行API
5, initialization & cleanup
5, initialization & cleanup
ted-xu
About java object initialization and cleanup
Java SE 8 技術手冊第 15 章 - 通用API
Java SE 8 技術手冊第 15 章 - 通用API
Justin Lin
使用日誌API 瞭解國際化基礎 運用規則表示式 認識JDK8 API增強
Java SE 7 技術手冊投影片第 16 章 - 自訂泛型、列舉與標註
Java SE 7 技術手冊投影片第 16 章 - 自訂泛型、列舉與標註
Justin Lin
Java SE 7 技術手冊
More Related Content
What's hot
並行與平行
並行與平行
Justin Lin
《Python 3.5 技術手冊》第 13 章投影片
型態與運算子
型態與運算子
Justin Lin
認識內建型態 學習字串格式化 瞭解變數與運算子 運用切片運算
從模組到類別
從模組到類別
Justin Lin
《Python 3.5 技術手冊》第 5 章投影片
5. 建構式、原型與類別
5. 建構式、原型與類別
Justin Lin
認識建構式之作用 理解原型鏈機制 區別原型與類別典範 善用類別語法
CH08:例外處理
CH08:例外處理
Justin Lin
使用try、catch處理例外 認識例外繼承架構 認識throw、throws使用時機 運用finally關閉資源 使用自動關閉資源語法 認識AutoCloseable介面
從 REPL 到 IDE
從 REPL 到 IDE
Justin Lin
《Python 3.5 技術手冊》投影片第 2 章
從模組到類別
從模組到類別
Justin Lin
深入模組管理 初識物件導向 學習定義類別 定義運算子
資料永續與交換
資料永續與交換
Justin Lin
使用 pickle 與 shelve 認識 DB-API 2.0 使用 sqlite3 模組 處理 CSV、JSON、XML
4. 使用物件
4. 使用物件
Justin Lin
掌握this參考 運用物件實字 認識物件協定 使用符號協定
CH11:執行緒與並行API
CH11:執行緒與並行API
Justin Lin
認識Thread與Runnable 使用synchronized 使用wait()、notify()、notifyAll() 運用高階並行API
進階主題
進階主題
Justin Lin
《Python 3.5 技術手冊》第 14 章投影片
Java SE 7 技術手冊投影片第 08 章 - 例外處理
Java SE 7 技術手冊投影片第 08 章 - 例外處理
Justin Lin
Java SE 7 技術手冊
Java SE 8 技術手冊第 5 章 - 物件封裝
Java SE 8 技術手冊第 5 章 - 物件封裝
Justin Lin
瞭解封裝觀念與實現 定義類別、建構式與方法 使用方法重載與不定長度引數 瞭解static成員
12, string
12, string
ted-xu
Java tutorials - String
Java SE 8 技術手冊第 4 章 - 認識物件
Java SE 8 技術手冊第 4 章 - 認識物件
Justin Lin
區分基本型態與類別型態 瞭解物件與參考的關係 從包裹器認識物件 以物件觀點看待陣列 認識字串的特性
open() 與 io 模組
open() 與 io 模組
Justin Lin
使用 open()函式 使用 stdin、stdout、stderr 認識檔案描述器 認識 io 模組
8. open() 與 io 模組
8. open() 與 io 模組
Justin Lin
使用 open()函式 使用 stdin、stdout、stderr 認識檔案描述器 認識 io 模組
open() 與 io 模組
open() 與 io 模組
Justin Lin
《Python 3.5 技術手冊》第 8 章投影片
Java SE 8 技術手冊第 11 章 - 執行緒與並行API
Java SE 8 技術手冊第 11 章 - 執行緒與並行API
Justin Lin
認識Thread與Runnable 使用synchronized 使用wait()、notify()、notifyAll() 運用高階並行API
5, initialization & cleanup
5, initialization & cleanup
ted-xu
About java object initialization and cleanup
What's hot
(20)
並行與平行
並行與平行
型態與運算子
型態與運算子
從模組到類別
從模組到類別
5. 建構式、原型與類別
5. 建構式、原型與類別
CH08:例外處理
CH08:例外處理
從 REPL 到 IDE
從 REPL 到 IDE
從模組到類別
從模組到類別
資料永續與交換
資料永續與交換
4. 使用物件
4. 使用物件
CH11:執行緒與並行API
CH11:執行緒與並行API
進階主題
進階主題
Java SE 7 技術手冊投影片第 08 章 - 例外處理
Java SE 7 技術手冊投影片第 08 章 - 例外處理
Java SE 8 技術手冊第 5 章 - 物件封裝
Java SE 8 技術手冊第 5 章 - 物件封裝
12, string
12, string
Java SE 8 技術手冊第 4 章 - 認識物件
Java SE 8 技術手冊第 4 章 - 認識物件
open() 與 io 模組
open() 與 io 模組
8. open() 與 io 模組
8. open() 與 io 模組
open() 與 io 模組
open() 與 io 模組
Java SE 8 技術手冊第 11 章 - 執行緒與並行API
Java SE 8 技術手冊第 11 章 - 執行緒與並行API
5, initialization & cleanup
5, initialization & cleanup
Similar to 4. 流程語法與函式
Java SE 8 技術手冊第 15 章 - 通用API
Java SE 8 技術手冊第 15 章 - 通用API
Justin Lin
使用日誌API 瞭解國際化基礎 運用規則表示式 認識JDK8 API增強
Java SE 7 技術手冊投影片第 16 章 - 自訂泛型、列舉與標註
Java SE 7 技術手冊投影片第 16 章 - 自訂泛型、列舉與標註
Justin Lin
Java SE 7 技術手冊
Python程式精修
Python程式精修
ITtraining
節錄課程內容
Java SE 7 技術手冊投影片第 12 章 - 通用API
Java SE 7 技術手冊投影片第 12 章 - 通用API
Justin Lin
Java SE 7 技術手冊
Java SE 7 技術手冊投影片第 03 章 - 基礎語法
Java SE 7 技術手冊投影片第 03 章 - 基礎語法
Justin Lin
Java SE 7 技術手冊
3. java basics
3. java basics
netdbncku
Refactoring with Patterns in PHP
Refactoring with Patterns in PHP
Jace Ju
從實例瞭解如何用模式來實現重構
Similar to 4. 流程語法與函式
(7)
Java SE 8 技術手冊第 15 章 - 通用API
Java SE 8 技術手冊第 15 章 - 通用API
Java SE 7 技術手冊投影片第 16 章 - 自訂泛型、列舉與標註
Java SE 7 技術手冊投影片第 16 章 - 自訂泛型、列舉與標註
Python程式精修
Python程式精修
Java SE 7 技術手冊投影片第 12 章 - 通用API
Java SE 7 技術手冊投影片第 12 章 - 通用API
Java SE 7 技術手冊投影片第 03 章 - 基礎語法
Java SE 7 技術手冊投影片第 03 章 - 基礎語法
3. java basics
3. java basics
Refactoring with Patterns in PHP
Refactoring with Patterns in PHP
More from Justin Lin
Ch14 簡介 Spring Boot
Ch14 簡介 Spring Boot
Justin Lin
認識 Spring Boot 認識 Spring Tool Suite 遷移微網誌至 Spring Boot
Ch13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/Security
Justin Lin
區別程式庫與框架 逐步善用 Spring MVC 簡介 Thymeleaf 模版 使用 Spring Security
Ch12 Spring 起步走
Ch12 Spring 起步走
Justin Lin
使用 Gradle 結合 Gradle 與 IDE 認識相依注入 使用 Spring 核心
Ch11 簡介 JavaMail
Ch11 簡介 JavaMail
Justin Lin
寄送純文字郵件 寄送 HTML 郵件 寄送附檔郵件
Ch10 Web 容器安全管理
Ch10 Web 容器安全管理
Justin Lin
了解 Java EE 安全概念與名詞 使用容器基本驗證與表單驗 使用 HTTPS 保密資料傳輸
Ch09 整合資料庫
Ch09 整合資料庫
Justin Lin
了解 JDBC 架構 使用基本的 JDBC 透過 JNDI 取得DataSource 在 Web 應用程式整合資料庫
Ch08 自訂標籤
Ch08 自訂標籤
Justin Lin
使用 Tag File 自訂標籤 使用 Simple Tag 自訂標籤 使用 Tag 自訂標籤
Ch07 使用 JSTL
Ch07 使用 JSTL
Justin Lin
了解何謂 JSTL 使用 JSTL 核心標籤庫 使用 JSTL 格式標籤庫 使用 JSTL XML 標籤庫 使用 JSTL 函式標籤庫
Ch06 使用 JSP
Ch06 使用 JSP
Justin Lin
了解 JSP 生命週期 使用 JSP 語法元素 使用 JSP 標準標籤 使用運算式語言(EL) 自訂 EL 函式
Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器
Justin Lin
了解 Servlet 生命週期 使用 ServletConfig 與ServletContext 使用 PushBuilder 各種傾聽器的使用 繼承 HttpFilter 實作過濾器
Ch04 會話管理
Ch04 會話管理
Justin Lin
了解會話管理基本原理 使用 Cookie 類別 使用 HttpSession 會話管理 了解容器會話管理原理
Ch03 請求與回應
Ch03 請求與回應
Justin Lin
取得請求參數與標頭 處理中文字元請求與回應 設定與取得請求範圍屬性 使用轉發、包含、重新導向
Ch02 撰寫與設定 Servlet
Ch02 撰寫與設定 Servlet
Justin Lin
開發環境準備與使用 了解 Web 應用程式架構 Servlet 撰寫與部署設定 了解 URI 模式對應 使用 web-fragement.xml
CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式
Justin Lin
認識 HTTP 基本特性 了解何為 URI 編碼 認識 Web 容器角色 了解 Servlet 與 JSP 的關係 認識 MVC/Model 2
14. 進階主題
14. 進階主題
Justin Lin
運用描述器 實作裝飾器 定義 meta 類別 使用相對匯入 泛型進階
13.並行、平行與非同步
13.並行、平行與非同步
Justin Lin
認識並行、平行與非同步 使用 threading 模組 使用 multiprocessing 模組 使用 concurrent.futures模組 運用 async、await 與 asyncio
12. 除錯、測試與效能
12. 除錯、測試與效能
Justin Lin
使用 pdb 模組除錯 對程式進行單元測試 使用 timeit 評測程式片段 使用 cProfile(profile)察看評測數據
11. 常用內建模組
11. 常用內建模組
Justin Lin
處理日期與時間 認識日誌的使用 運用規則表示式 管理檔案與目錄 URL 處理
10. 資料永續與交換
10. 資料永續與交換
Justin Lin
使用 pickle 與 shelve 認識 DB-API 2.0 使用 sqlite3 模組 處理 CSV、JSON、XML
9. 資料結構
9. 資料結構
Justin Lin
認識 hashable、iterable、orderable 對物件進行排序 認識群集架構 運用 collections 模組 運用 collections.abc 模組
More from Justin Lin
(20)
Ch14 簡介 Spring Boot
Ch14 簡介 Spring Boot
Ch13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/Security
Ch12 Spring 起步走
Ch12 Spring 起步走
Ch11 簡介 JavaMail
Ch11 簡介 JavaMail
Ch10 Web 容器安全管理
Ch10 Web 容器安全管理
Ch09 整合資料庫
Ch09 整合資料庫
Ch08 自訂標籤
Ch08 自訂標籤
Ch07 使用 JSTL
Ch07 使用 JSTL
Ch06 使用 JSP
Ch06 使用 JSP
Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器
Ch04 會話管理
Ch04 會話管理
Ch03 請求與回應
Ch03 請求與回應
Ch02 撰寫與設定 Servlet
Ch02 撰寫與設定 Servlet
CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式
14. 進階主題
14. 進階主題
13.並行、平行與非同步
13.並行、平行與非同步
12. 除錯、測試與效能
12. 除錯、測試與效能
11. 常用內建模組
11. 常用內建模組
10. 資料永續與交換
10. 資料永續與交換
9. 資料結構
9. 資料結構
4. 流程語法與函式
1.
2.
4. 流程語法與函式 • 學習目標 –
認識基本流程語法 – 使用 for Comprehension – 認識函式與變數範圍 – 運用一級函式特性 – 使用 yield 建立產生器 – 初探型態提示 2
3.
if 分支判斷 • 程式區塊使用冒號「:」開頭 •
之後同一區塊範圍要有相同的縮排 – 不可混用不同空白數量,不可混用空白與Tab, • Python 的建議是使用四個空白作為縮排 3
4.
• if 可以搭配
else 4
5.
• if..elif..else • if..else
運算式語法 5
6.
while 迴圈 6
7.
• 跟 while
搭配的 else 7
8.
• 若不想讓 else
執行,必須是 while 中因 為 break 而中斷迴圈 8
9.
• 建議別使用 while
與 else 的形式 9
10.
for in 迭代 •
想要循序迭代某個序列 • 使用 range() 函式 10
11.
• 使用 zip()
函式 • 使用 enumerate() 函式 11
12.
• 迭代時具有索引資訊 • 預設
enumerate() 會從 0 開始計數 12
13.
• set 也實作了__iter__()方法,可以進 行迭代 •
想要迭代 dict 鍵值的話,可以使用它的 keys()、values()或 items()方法 13
14.
• for in
也有個與 else 配對的形式 • 建議別使用 for in…else 的形式 14
15.
pass、break、continue • pass 就真的是
pass,什麼都不做 • break 可用來中斷 while 迴圈、for in 的迭代 • 在 while 迴圈中遇到 continue 的話,此 次不執行後續程式碼,直接進行下次迴圈 15
16.
16
17.
for Comprehension 17
18.
18
19.
• 巢狀結構也是可行,不過建議別太過火 • 取得兩個序列的排列組合: 19
20.
• 在 for
Comprehension 兩旁放上(),這 樣的話就會建立一個 generator 物件,具 有惰性求值特性 – sum([n for n in range(1, 10001)]) – sum(n for n in range(1, 10001)) – g = (n for n in range(1, 10001)) 20
21.
• 也可以用來建立 set •
建立 dict 實例 21
22.
• 建立 tuple •
將 for Comprehension 產生器運算式傳 給 tuple()。 22
23.
使用 def 定義函式 •
發現到程式中… • 定義函式 • 原先的程式片段就可以修改為: 23
24.
• 函式是一種抽象,對流程的抽象 • 函式也可以呼叫自身,這稱之為遞迴 (Recursion) 24
25.
• 區域函式(Local function) 25
26.
參數與引數 • 不支援函式重載(Overload) 26
27.
• 在 Python
中可以使用預設引數來有限度地 模仿函式重載 27
28.
• 在執行到 def
時,就會依定義建立了相關 的資源 28
29.
• 可以將 prepend()
的 lt 參數預設值設為 None,並在函式中指定真正的預設值 29
30.
• 可以指定參數名稱來設定其引數值,稱之 為關鍵字引數 30
31.
• *與** 31
32.
32
33.
• 可以在一個函式中,同時使用*與** • 如果想要設計一個函式接受任意引數,就 可以加以運用 33
34.
限定位置參數、關鍵字參數 • Python 3.8新增了Positional-Only Parameters •
/前的參數必須依定義的位置呼叫,而且不 能採用關鍵字參數的形式來指定 34
35.
• 某些參數的值,也許想限定為只能以關鍵 字參數形式指定 可以在參數列使用*來標示 35
36.
• 在定義參數列時,/與*可以並存 • /之後*之前的參數,可以使用位置參數或關 鍵字參數形式指定 36
37.
一級函式的運用 • 函式不單只是個定義,還是個值,是 function 的實例 37
38.
• 函式跟數值、list、set、dict、tuple 等一樣,都被 Python
視為一級公民來對待 • 可以自由地在變數、函式呼叫時指定,也 被稱一級函式(First-class function) • 函式代表著某個可重用流程的封裝,這表 示可以將某個可重用流程進行傳遞 38
39.
• 過濾出字串長度大於 6
的元素: • 可能會多次進行這類的比較,因此定義出 函式,以重用這個流程: 39
40.
40
41.
41
42.
• 想將元素全部轉為大寫後傳回新的清單 42
43.
• Python 就內建有
filter()、map() 函式 可以直接取用 • 傳回的實例並不是 list,分別是 map 與 filter 物件 43
44.
• 有時會想將其中的元素進行排序 • sorted()會傳回新的
list,其中包含了 排序後的結果 • key 參數可用來指定針對什麼特性來迭代 44
45.
• 如果是可變動的 list,本身也有個
sort() 方法,這個方法會直接在 list 本身排序 45
46.
lambda 運算式 • 本體很簡單,只有一句簡單的運算,對於 這類情況,可以考慮使用
lambda 運算式 46
47.
• 若需要兩個以上的參數,中間要使用逗號 「,」區隔 • 結合
dict 與 lambda 來模擬 switch 47
48.
初探變數範圍 • 一個名稱在指定值時,就可以成為變數, 並建立起自己的作用範圍(Scope) • 在取用一個變數時,會看看目前範圍中是 否有指定的變數名稱,若無則向外尋找 48
49.
• 如果在 func()
中,對名稱 x 作了指定值 的動作呢? 49
50.
• 變數可以在內建、全域、外包函式、區域 函式中尋找或建立 50
51.
• Python 中的全域,實際上是以模組檔案為 •
builtins 中的名稱範圍,橫跨各個模組 51
52.
• locals() 函式可用來查詢區域變數名稱 與值。 52
53.
• global() 可以取得全域變數的名稱與值 •
如果對變數指定值時,希望是針對全域範 圍的話,可以使用 global 宣告 53
54.
• 來看看以下這個會發生什麼事情? 54
55.
• 在 Python
3 中新增了nonlocal,可以指 明變數並非區域變數 55
56.
yield 產生器 • 函式並不會因為
yield 而結束,只是將流 程控制權讓給函式的呼叫者 56
57.
• 當函式中使用 yield
指定一個值時,呼叫 該函式會傳回一個 generator 物件 • 該物件具有 __next__()方法,通常會使 用 next() 函式呼叫 • 若無法產生下一個值,則會發生 StopIteration 例外 57
58.
• 可以透過 send()
方法指定值,令其成為 yield 運算結果 58
59.
初探型態提示 • Python 3.5
開始,正式納入了型態提示 (Type Hints)特性 • Python 3.6 更進一步加強了這個特性,並 將 typing 模組納入標準 API 59
60.
• 型態錯誤在執行時期才會呈現出來 • 以
add(1, '2') 呼叫函式,執行時就會 發生 TypeError 錯誤 60
61.
• 編輯上的輔助可能不足 61
62.
• 如果需要調整程式庫之間的呼叫協定變更, 會造成程式庫的客戶端必須進行對應的修 改,問題在於哪些地方需要修改呢? • 要確認每個被影響到的地方,在執行時期 都能執行到,這必須有覆蓋率高的測試流 程才有可能。 •
你的應用程式在開發時真的會寫測試嗎? 測試的覆蓋率又真的足夠嗎? 62
63.
型態提示語法 • 想令其參數只接受整數型態,並且傳回整 數型態: • 不宣告傳回值型態: 63
64.
64
65.
• 為底下的 names
變數標註 list: • typing 模組.. 65
66.
• Python 3.9以後,對於內建型態list、 set、tuple、dict等內建型態,可以直 接標明元素型態 66
67.
• 不定長度引數 67
68.
• ** 定義之參數 68
69.
• 如果是個可迭代的物件,例如產生器,可 以使用 Iterator: •
更精確定義 69
70.
70
71.
• 希望變數值指定後,就不能被修改 • Python
3.8以後,可以透過型態提示 Final來實現這個功能 71
72.
使用 mypy 檢查型態 •
除了使用 IDE 之外,社群中推薦的型態檢 查工具之一是 mypy • 可以透過 pip 來安裝 • 從Python 3.4 開始就內建了 pip 指令 72
73.
73
74.
• 使用 mypy
進行型態檢查 74
75.
75
76.
76
Download now