""" 形參和實參: 形參:定義 函數時的 參數變量 實參:調用 函數時,使用的參數變量 參數傳遞的過程,就是 把實參的引用 傳遞給 形參 ,使用實參的值來執行函數體的過程。 在 Python 中,函數的實參/返回值都是是靠引用來傳遞來的 """ def location(a=0, b=0): """ 按照參數位置,依次傳遞參數,這是最普通的方式 """ print(a + b) location(3, 9) # 位置實參,即調用函數時,按順序傳遞參數,3 傳給 a,9 傳給 b;得到正確結果12 location(b=3, a=9) # 關鍵字實參,即調用函數時,按關鍵字傳遞參數,3 傳給 b,9 傳給 a;一旦第一個實參使用了關鍵字實參,那么后面的實參都須使用關鍵字實參;得到正確結果12 location(*(3, 9)) # 元組封包實參,需要在實參前加一個*號,表示對元組拆包后,按位置傳給形參;得到正確結果12 location(**{'a': 3, 'b': 9}) # 字典封包實參,需要在實參前加兩個*號(拆包兩次),表示對字典拆包后,按鍵值與形參名一一對應傳給形參;得到正確結果12 location(*{'a': 3, 'b': 9}) # 字典封包實參,因為只使用了一個*號,只拆包了一次,得到'a'和‘b’,'a'+‘b’返回的結果是'ab' # 以上采用了實參拆包傳遞給形參的方式 def person(userid, name, age, sex='男', *args, **kwargs): print(f''' 身份證:{userid} 姓名:{name} 年紀:{age} 性別:{sex} 不定長參數信息:{args} 字典參數信息:{kwargs} ''') person('320102', '張三', 24, '男', 'txt1.txt', 'txt2.txt', 'txt3.txt', 班級='2101班', 愛好='唱歌') ''' 以上采用了封包接收實參的方式,實參被*args和**kwargs各自收入了元組和字典中 得到: 身份證:320102 姓名:張三 年紀:24 性別:男 不定長參數信息:('txt1.txt', 'txt2.txt', 'txt3.txt') 字典參數信息:{'班級': '2101班', '愛好': '唱歌'} ''' # person('320102', '張三', 24, sex='男', 'txt1.txt', 'txt2.txt', 'txt3.txt', 班級='2101班', 愛好='唱歌') 這種調用出錯,當有一個采用了關鍵字傳實參時,其后面都必須得是關鍵字傳實參數的方式,否則報錯。