狠狠撸
Submit Search
4. 流程语法与函式
Jan 27, 2021
1 like
202 views
Justin Lin
認識基本流程語法 使用 for Comprehension 認識函式與變數範圍 運用一級函式特性 使用 yield 建立產生器 初探型態提示
Read less
Read more
1 of 76
Download now
Downloaded 13 times
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參考 運用物件實字 認識物件協定 使用符號協定
颁贬11:执行绪与并行础笔滨
颁贬11:执行绪与并行础笔滨
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
(20)
并行与平行
并行与平行
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參考 運用物件實字 認識物件協定 使用符號協定
颁贬11:执行绪与并行础笔滨
颁贬11:执行绪与并行础笔滨
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
并行与平行
并行与平行
Justin Lin
?
型态与运算子
型态与运算子
Justin Lin
?
从模组到类别
从模组到类别
Justin Lin
?
5. 建構式、原型與類別
5. 建構式、原型與類別
Justin Lin
?
CH08:例外处理
CH08:例外处理
Justin Lin
?
從 REPL 到 IDE
從 REPL 到 IDE
Justin Lin
?
从模组到类别
从模组到类别
Justin Lin
?
资料永续与交换
资料永续与交换
Justin Lin
?
4. 使用物件
4. 使用物件
Justin Lin
?
颁贬11:执行绪与并行础笔滨
颁贬11:执行绪与并行础笔滨
Justin Lin
?
进阶主题
进阶主题
Justin Lin
?
Java SE 7 技術手冊投影片第 08 章 - 例外处理
Java SE 7 技術手冊投影片第 08 章 - 例外处理
Justin Lin
?
Java SE 8 技術手冊第 5 章 - 物件封裝
Java SE 8 技術手冊第 5 章 - 物件封裝
Justin Lin
?
12, string
12, string
ted-xu
?
Java SE 8 技術手冊第 4 章 - 認識物件
Java SE 8 技術手冊第 4 章 - 認識物件
Justin Lin
?
open() 與 io 模組
open() 與 io 模組
Justin Lin
?
8. open() 與 io 模組
8. open() 與 io 模組
Justin Lin
?
open() 與 io 模組
open() 與 io 模組
Justin Lin
?
Java SE 8 技術手冊第 11 章 - 執行緒與並行API
Java SE 8 技術手冊第 11 章 - 執行緒與並行API
Justin Lin
?
5, initialization & cleanup
5, initialization & cleanup
ted-xu
?
Similar to 4. 流程语法与函式
(7)
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 技術手冊
笔测迟丑辞苍程式精修
笔测迟丑辞苍程式精修
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
?
从实例瞭解如何用模式来实现重构
Java SE 8 技術手冊第 15 章 - 通用API
Java SE 8 技術手冊第 15 章 - 通用API
Justin Lin
?
Java SE 7 技術手冊投影片第 16 章 - 自訂泛型、列舉與標註
Java SE 7 技術手冊投影片第 16 章 - 自訂泛型、列舉與標註
Justin Lin
?
笔测迟丑辞苍程式精修
笔测迟丑辞苍程式精修
ITtraining
?
Java SE 7 技術手冊投影片第 12 章 - 通用API
Java SE 7 技術手冊投影片第 12 章 - 通用API
Justin Lin
?
Java SE 7 技術手冊投影片第 03 章 - 基礎語法
Java SE 7 技術手冊投影片第 03 章 - 基礎語法
Justin Lin
?
3. java basics
3. java basics
netdbncku
?
Refactoring with Patterns in PHP
Refactoring with Patterns in PHP
Jace Ju
?
More from Justin Lin
(20)
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 模組
Ch14 簡介 Spring Boot
Ch14 簡介 Spring Boot
Justin Lin
?
Ch13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/Security
Justin Lin
?
Ch12 Spring 起步走
Ch12 Spring 起步走
Justin Lin
?
Ch11 簡介 JavaMail
Ch11 簡介 JavaMail
Justin Lin
?
Ch10 Web 容器安全管理
Ch10 Web 容器安全管理
Justin Lin
?
Ch09 整合資料庫
Ch09 整合資料庫
Justin Lin
?
Ch08 自訂標籤
Ch08 自訂標籤
Justin Lin
?
Ch07 使用 JSTL
Ch07 使用 JSTL
Justin Lin
?
Ch06 使用 JSP
Ch06 使用 JSP
Justin Lin
?
Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器
Justin Lin
?
Ch04 會話管理
Ch04 會話管理
Justin Lin
?
Ch03 請求與回應
Ch03 請求與回應
Justin Lin
?
Ch02 撰寫與設定 Servlet
Ch02 撰寫與設定 Servlet
Justin Lin
?
CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式
Justin Lin
?
14. 进阶主题
14. 进阶主题
Justin Lin
?
13.并行、平行与非同步
13.并行、平行与非同步
Justin Lin
?
12. 除錯、測試與效能
12. 除錯、測試與效能
Justin Lin
?
11. 常用內建模組
11. 常用內建模組
Justin Lin
?
10. 资料永续与交换
10. 资料永续与交换
Justin Lin
?
9. 資料結構
9. 資料結構
Justin Lin
?
4. 流程语法与函式
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