關鍵字參數:參數的名稱必須和 函數定義的參數名稱 相同
若采用混合方式傳遞參數: 若位置參數在關鍵字參數之後,程序會報錯;反過來不會報錯
默認值參數形式:def happy_birthday(name="abc",age=18) #即形參已給定數值
注意項:
①【函數定義時】,形參存在位置參數和默認值參數時,默認值參數放在最後
可變位置參數:注意 列表傳遞 的 解包操作,前加*
可變關鍵字參數:注意 直接傳遞字典 的 解包操作,前加**
#個數可變的位置參數
def fun(*para):
print(type(para))
for item in para:
print(item)
fun(10,20,30,52) #輸出時tuple類型,(10,20,30,52)
fun(10) #輸出tuple類型,(10)
fun([10,20,30]) #輸出tuple類型,[10,20,30],元組只有一個元素且元素類型時列表
fun(*[10,20,30]) #實參前加*號將列表進行解包,輸出是(10,20,30)
#個數可變的關鍵字參數
def fun2(**ecpara):
print(type(ecpara))
for key,value in ecpara.items():
print(key,value)
fun2(name="abc",age=18,height=180,weight=160) #輸出dict類型
#直接穿字典類型dict
d={"name":"abc","age":18,"height":180,"weight":160}
fun2(**d) #類似字典的解包,即可穿字典類型
Bug的由來:
某人在用第一部計算機寫程序時,一致出現錯誤,因此他拆開計算機發現有個蟲子卡在寄存器中,成為Bug,排除錯誤debug
(1)是因為input()函數會將輸入內容轉為str類型,str不能與int比較,故語法錯誤
(2)是因為未給 i 賦值,print是中文括號,循環體內沒有改變循環變量的語句
對於邏輯不清晰的Bug調試采用: ①使用print()函數輸出檢驗 ②使用“#”暫時注釋部分代碼
BaseExceptiom 是最基礎最大的異常報錯 ,是最大的父類
BaseException as e:是將該模塊用作別名 e
finally模塊:常用來釋放try塊中申請的資源
*後面的 文件處理關閉 和 數據庫的連接 都會 放在finally模塊中
try-except-else-finally結構 相較於前兩種是 較為完整的處理程序異常的結構
import traceback
try:
print("---------------")
print(1/0)
except:
traceback.print_exc() #打印錯誤信息
traceback模塊 作用:用該模塊打印錯誤信息,可能會存入到文件當中放到日志中成為log日志