CH08 · 學習導覽

函式與套件

內建函式、自定義函式、參數與變數範圍、import 套件
Python 程式設計 · 滄海二版 CH08 · 導覽(完整內容見 PDF 講義)
map · 函式三來源

函式從哪來?

內建函式
Python 自帶、免 import
len max sorted abs
自定義函式
自己用 def
可重複使用
套件函式
import 別人寫好的模組
time random sys

用函式讓程式好寫、好讀、好維護,並能重複使用程式碼。

built-in · 內建函式群

常用內建函式

函式作用
zip(a, b)配對成元組(要 list() 才看得到)
sorted(v)排序回傳串列;reverse=True 降冪
max/min/sum最大/最小/總和
int/float/str/list/hex/oct型別轉換
abs(v) / divmod(a,b)絕對值/(商, 餘數)

sorted() 不改原本(與 .sort() 不同);int('Python') 會 ValueError。

signature 1 · 招牌

函式呼叫流程

引數 add(3, 4) → 複製給參數 → def add(a, b) → return → 得到 7

引數複製給參數、執行、return 交回結果。呼叫一定要在 def 定義之後,否則 NameError。

def · 自定義與預設值

def、缺參數、預設值

缺必填參數
most( ) 少傳 → TypeError: missing 1 required positional argument
給預設值
def f(x=預設):
沒給就用預設,不會 TypeError。
有預設的放沒預設的右邊
signature 2 · 招牌考點

變數範圍:區域 vs 全域

函式內 x = ...
重新賦值 → 建立區域變數,外面全域不受影響。
函式內 d[鍵] = 值
改可變物件內容(沒重新賦值)→ 動到全域那一份。

這是最常考的陷阱。另:函式內建立的區域變數,函式外用會 NameError。

import · 套件

import 三個常用套件

time
asctime() 現在時間
time() 秒數(算耗時)
sleep(n) 暫停
random
choice() 抽一個
randint(a,b) 隨機整數
shuffle() 洗牌
sys
version 版本資訊

語法:import 套件import 套件 as 簡稱

checklist · 考前掃描

最容易掉的點

  • 呼叫寫在 def 之前 → NameError。
  • 缺必填參數 → TypeError;可用預設值避免。
  • int('Python') → ValueError;轉換前確認可轉。
  • 變數範圍:= 重新賦值造區域;d[鍵]=值 改內容動全域。
  • sorted() 回傳新串列不改原本;zip()list() 才看得到。
next · 學習閉環

接下來怎麼練

這份 slides
導覽
PDF 講義
學細節
index
Pyodide 試跑
本地練習
自己寫
測驗卷
≥ 90%

寫任何函式:先想參數夠不夠(TypeError)、呼叫在定義後沒、改的是區域還是全域。