>>defstudent_grade(name,grade,has_bonus): ifhas_b ">
IT培訓(xùn)網(wǎng)
IT在線學(xué)習(xí)
1、關(guān)鍵字參數(shù)
關(guān)鍵字參數(shù)是按照名稱傳遞參數(shù)的,而與參數(shù)的位置無關(guān),它使用類似給變量賦值的方式調(diào)用。以student_grade()函數(shù)為例,使用關(guān)鍵字參數(shù)調(diào)用:
- >>> def student_grade(name, grade, has_bonus):
- ... if has_bonus:
- ... grade += 10
- ... if grade > 100:
- ... grade = 100
- ... print('{name}的成績?yōu)閧grade}'.format(name=name, grade=grade))
- ...
- >>> student_grade(name='Ming', grade=79, has_bonus=False)
- Ming的成績?yōu)?span id="ccccccc" class="number">79
使用關(guān)鍵字參數(shù)調(diào)用函數(shù)時(shí),參數(shù)的位置變得無關(guān)緊要,只要參數(shù)的名字是正確的,函數(shù)就能夠正常調(diào)用:
- >>> student_grade(grade=80, has_bonus=True, name='Ming')
- Ming的成績?yōu)?span id="cccc80c" class="number">90
- >>> student_grade(has_bonus=True, name='Ming', grade=99)
- Ming的成績?yōu)?span id="ccc84cc" class="number">100
關(guān)鍵字參數(shù)和位置參數(shù)還可以混用,下面都是合法的調(diào)用方式:
- >>> student_grade('Ming', grade=79, has_bonus=False)
- Ming的成績?yōu)?span id="ccc04cc" class="number">79
- >>> student_grade('Ming', 79, has_bonus=False)
- Ming的成績?yōu)?span id="ccccc8c" class="number">79
混用關(guān)鍵字參數(shù)和位置參數(shù)使得調(diào)用函數(shù)變得更加靈活,但是有一種情況是不合法的,即關(guān)鍵字參數(shù)出現(xiàn)在位置參數(shù)的前面:
- >>> student_grade(name='Ming', bonus=False, 59)
- File "
" , line 1- SyntaxError: positional argument follows keyword argument
Python解釋器提示出錯(cuò)了,因?yàn)槲恢脜?shù)跟在了關(guān)鍵字參數(shù)后面。
說明
無論是位置參數(shù)還是關(guān)鍵字參數(shù),都是函數(shù)在調(diào)用時(shí)使用的說法,也就是實(shí)參,稱它們?yōu)槲恢脤?shí)參和關(guān)鍵字參數(shù)更準(zhǔn)確。
2、參數(shù)的默認(rèn)值
在創(chuàng)建自定義函數(shù)時(shí),可以給參數(shù)提供默認(rèn)值。如果在調(diào)用函數(shù)時(shí)指定了參數(shù)的值,那么使用該值,否則使用默認(rèn)值。在之前的student_grade()基礎(chǔ)上稍作修改,給has_bonus參數(shù)提供一個(gè)默認(rèn)值:False,即默認(rèn)沒有10分的獎勵(lì)分:
- >>> def student_grade_v1(name, grade, has_bonus=False):
- ... if has_bonus:
- ... grade += 10
- ... if grade > 100:
- ... grade = 100
- ... print('{name}的成績?yōu)閧grade}'.format(name=name, grade=grade))
- ...
在調(diào)用函數(shù)時(shí),可以不指定has_bonus參數(shù)的值:
- >>> student_grade_v1('Ming', 59)
- Ming的成績?yōu)?span id="cccc04c" class="number">59
當(dāng)然也可以指定has_bonus參數(shù)的值,此時(shí)has_bonus的值為指定的值,可以使用關(guān)鍵字參數(shù)或者位置參數(shù):
- >>> student_grade_v1('Ming', 59, True)
- Ming的成績?yōu)?span id="8cccccc" class="number">69
- >>> student_grade_v1('Ming', 59, bonus=True)
- Ming的成績?yōu)?span id="ccccc8c" class="number">69
下面是一個(gè)有更多參數(shù)默認(rèn)值的示例:
- >>> def personal_info(name, gender='女', pet='狗', has_glasses=False):
- ... tag = '他' if gender == '男' else '她' # 用三目運(yùn)算符確定性別稱呼
- ... print('{0}是個(gè){1}孩。'.format(name, gender))
- ... print('{}最喜歡的寵物是{}。'.format(tag, pet))
- ... if has_glasses:
- ... print('{0}戴眼鏡。'.format(tag))
- ... else:
- ... print('{0}不戴眼鏡。'.format(tag))
- ...
這個(gè)函數(shù)比之前的要復(fù)雜一些,它會根據(jù)用戶提供的信息,打印一些個(gè)性化的句子。因?yàn)榇撕瘮?shù)有很多參數(shù),所以合法的調(diào)用方式有很多,以下是其中的一些:
- >>> personal_info('梅梅') # 一個(gè)位置參數(shù),即名字,其他參數(shù)使用默認(rèn)值
- 梅梅是個(gè)女孩。
- 她最喜歡的寵物是狗。
- 她不戴眼鏡。
- >>> personal_info(name='梅梅') # 一個(gè)關(guān)鍵字參數(shù)
- 梅梅是個(gè)女孩。
- 她最喜歡的寵物是狗。
- 她不戴眼鏡。
- >>> personal_info('梅梅', has_glasses=True) # 一個(gè)關(guān)鍵字參數(shù)和一個(gè)位置參數(shù)
- 梅梅是個(gè)女孩。
- 她最喜歡的寵物是狗。
- 她戴眼鏡。
- >>> personal_info(name='小明', gender='男') # 兩個(gè)關(guān)鍵字參數(shù)
- 小明是個(gè)男孩。
- 他最喜歡的寵物是狗。
- 他不戴眼鏡。
- >>> personal_info(pet='貓', name='梅梅') # 兩個(gè)關(guān)鍵字參數(shù)
- 梅梅是個(gè)女孩。
- 她最喜歡的寵物是貓。
- 她不戴眼鏡。
- >>> personal_info('小明', '男', '貓', True) # 四個(gè)位置參數(shù)
- 小明是個(gè)男孩。
- 他最喜歡的寵物是貓。
- 他戴眼鏡。
如果對Python開發(fā)感興趣或者想要深入學(xué)習(xí)的現(xiàn)在可以免費(fèi)領(lǐng)取學(xué)習(xí)大禮包哦(點(diǎn)擊領(lǐng)取80G課程資料 備注:領(lǐng)資料)。
>>本文地址:http://www.yceu.cn/zhuanye/2020/61672.html
聲明:本站稿件版權(quán)均屬中公教育優(yōu)就業(yè)所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
1 您的年齡
2 您的學(xué)歷
3 您更想做哪個(gè)方向的工作?