學習如何看懂Python官方手冊,以及語法規則,職訓所課堂筆記。
臨時整理區:
魔法函式
__name__ == "__main__"
直接執行而非被載入
https://pythonbook.cc/chapters/basic/module-and-package#被匯入-vs-直接執行
先定義好 function
調用函式
不行設定成可變物件
mutable object
課後作業:什麼是 mutable?
必須指向不可變對象
預設值盡量不要用空串列或字典
需改成
有內定值的引數要放在後面
https://docs.python.org/3/tutorial/controlflow.html#keyword-arguments
沒講清楚,預設對位置
混合使用,需要先對位置再用 keyword
查找語法手冊看到:
breakpoint(*args,**kws)
可變引數(*args 和 **kwargs)
(有先後順序,先一顆星,再來兩顆星)
(感覺很高手的做法,竟然可以把 key 傳入變成字典)
字典跑迴圈,拿出來的是鍵值 key
可以再用 key
取值,dic[key]
https://docs.python.org/3/tutorial/controlflow.html#special-parameters
範例:
Argument 跟 Parameters 翻譯差異推論
Parameter(參數):函數定義時列出的變數名稱,用來函數呼叫時提供的值。 def func(a, b=5):
,a
和 b
是參數。
Argument(引數):函數被呼叫時實際傳入函數的值。func(10, 20)
中,10
和 20
是傳入的引數。
三個區域的參數規則
(第一個 / 第二個區域 *,_第三個)
pos only / pos or keyword *, keyword only
例如 BIF函式
max(iterable, *, key = None)
print(*objects, sep=' ', end='\n', file=None, flush=False)¶
print(1,2,3) # 123都給object 星號代表全收
那要怎麼設定後面的參數
print(1,2,3,sep="#")
sort(對位置/,*,key=None)
解包,用更精簡的表達方式取出資料
range()
function
https://docs.python.org/3/tutorial/controlflow.html#unpacking-argument-lists
https://zhuyinjun.me/2019/python_unpacking_and_packing_1/
https://www.learncodewithmike.com/2019/12/python-unpacking.html
課後作業:什麼是 packing unpacking?
課後作業:什麼是 mutable inmutable?
留作自學,課堂並未教學
Pycharm 會提示你怎麼使用,就是使用 doc-strings
錯誤類型
分成兩大類: 語法錯誤 與 邏輯錯誤
try…except 是處理邏輯錯誤
for 迴圈正常結束後 else 才會繼續做
if 不成立後才執行 else
try…無錯誤…才執行 else
Python Errors and Exceptions:
https://docs.python.org/3/tutorial/errors.html
Python 所有錯誤資訊:
https://docs.python.org/3/library/exceptions.html#exception-hierarchy
Python 例外處理教學文章:
https://steam.oxxostudio.tw/category/python/basic/try-except.html
https://ithelp.ithome.com.tw/articles/10262492
錯誤訊息:
常見錯誤類型
錯誤資訊 | 說明 |
---|---|
NameError | 使用沒有被定義的對象 |
IndexError | 索引值超過了序列的大小 |
TypeError | 數據類型 ( type ) 錯誤 |
SyntaxError | Python 語法規則錯誤 |
ValueError | 傳入值錯誤 |
自我拋出錯誤
不做任何動作…略過
(非 return)
assert False, "錯誤訊息"
程式註解文字引用來源:
https://chwang12341.medium.com/給自己的python小筆記-debug與測試好幫手-嘗試try-except與主動引發raise與assert-程式異常處理-de0099d32bbe
https://youtube.com/shorts/Yo6KSHdImkQ?si=W1nnkXYYXPcp2Tuo
unittest
https://docs.python.org/zh-tw/3/library/unittest.html
( 高階使用者使用,日後學習,for 考試先記住規則 )
類別 大寫字母開頭(繼承類別):
def 方法:
def 方法:
self.assertIsInstance(obj, cls, msg=None)
return 返回一個( 任何物件 )
可以是字串,可以是串列,可以是陣列
發現到特別之處,finally 會在 return 前執行。
else 只能接在 except 之後
finally 會在 return 前執行,finally 若有 return 會覆蓋前面的 return
官方手冊案例:只使用 try 跟 finally
(沒有人會這樣寫吧)
(考題若出答案選錯誤,try 一定要配 except)
https://docs.python.org/3/tutorial/errors.html#defining-clean-up-actions