>>defstudent_grade(name,grade,has_bonus): ifhas_b ">
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="jjyrgzh" class="number">79
使用關(guān)鍵字參數(shù)調(diào)用函數(shù)時,參數(shù)的位置變得無關(guān)緊要,只要參數(shù)的名字是正確的,函數(shù)就能夠正常調(diào)用:
- >>> student_grade(grade=80, has_bonus=True, name='Ming')
- Ming的成績?yōu)?span id="imjyyyc" class="number">90
- >>> student_grade(has_bonus=True, name='Ming', grade=99)
- Ming的成績?yōu)?span id="gnzwets" class="number">100
關(guān)鍵字參數(shù)和位置參數(shù)還可以混用,下面都是合法的調(diào)用方式:
- >>> student_grade('Ming', grade=79, has_bonus=False)
- Ming的成績?yōu)?span id="zhwliqq" class="number">79
- >>> student_grade('Ming', 79, has_bonus=False)
- Ming的成績?yōu)?span id="hoaxmmn" 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解釋器提示出錯了,因為位置參數(shù)跟在了關(guān)鍵字參數(shù)后面。
說明
無論是位置參數(shù)還是關(guān)鍵字參數(shù),都是函數(shù)在調(diào)用時使用的說法,也就是實參,稱它們?yōu)槲恢脤崊⒑完P(guān)鍵字參數(shù)更準確。
2、參數(shù)的默認值
在創(chuàng)建自定義函數(shù)時,可以給參數(shù)提供默認值。如果在調(diào)用函數(shù)時指定了參數(shù)的值,那么使用該值,否則使用默認值。在之前的student_grade()基礎上稍作修改,給has_bonus參數(shù)提供一個默認值:False,即默認沒有10分的獎勵分:
- >>> 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ù)時,可以不指定has_bonus參數(shù)的值:
- >>> student_grade_v1('Ming', 59)
- Ming的成績?yōu)?span id="xffuyvo" class="number">59
當然也可以指定has_bonus參數(shù)的值,此時has_bonus的值為指定的值,可以使用關(guān)鍵字參數(shù)或者位置參數(shù):
- >>> student_grade_v1('Ming', 59, True)
- Ming的成績?yōu)?span id="nyngkdd" class="number">69
- >>> student_grade_v1('Ming', 59, bonus=True)
- Ming的成績?yōu)?span id="ifnuamq" class="number">69
下面是一個有更多參數(shù)默認值的示例:
- >>> def personal_info(name, gender='女', pet='狗', has_glasses=False):
- ... tag = '他' if gender == '男' else '她' # 用三目運算符確定性別稱呼
- ... print('{0}是個{1}孩。'.format(name, gender))
- ... print('{}最喜歡的寵物是{}。'.format(tag, pet))
- ... if has_glasses:
- ... print('{0}戴眼鏡。'.format(tag))
- ... else:
- ... print('{0}不戴眼鏡。'.format(tag))
- ...
這個函數(shù)比之前的要復雜一些,它會根據(jù)用戶提供的信息,打印一些個性化的句子。因為此函數(shù)有很多參數(shù),所以合法的調(diào)用方式有很多,以下是其中的一些:
- >>> personal_info('梅梅') # 一個位置參數(shù),即名字,其他參數(shù)使用默認值
- 梅梅是個女孩。
- 她最喜歡的寵物是狗。
- 她不戴眼鏡。
- >>> personal_info(name='梅梅') # 一個關(guān)鍵字參數(shù)
- 梅梅是個女孩。
- 她最喜歡的寵物是狗。
- 她不戴眼鏡。
- >>> personal_info('梅梅', has_glasses=True) # 一個關(guān)鍵字參數(shù)和一個位置參數(shù)
- 梅梅是個女孩。
- 她最喜歡的寵物是狗。
- 她戴眼鏡。
- >>> personal_info(name='小明', gender='男') # 兩個關(guān)鍵字參數(shù)
- 小明是個男孩。
- 他最喜歡的寵物是狗。
- 他不戴眼鏡。
- >>> personal_info(pet='貓', name='梅梅') # 兩個關(guān)鍵字參數(shù)
- 梅梅是個女孩。
- 她最喜歡的寵物是貓。
- 她不戴眼鏡。
- >>> personal_info('小明', '男', '貓', True) # 四個位置參數(shù)
- 小明是個男孩。
- 他最喜歡的寵物是貓。
- 他戴眼鏡。
如果對Python開發(fā)感興趣或者想要深入學習的現(xiàn)在可以免費領(lǐng)取學習大禮包哦(點擊領(lǐng)取80G課程資料 備注:領(lǐng)資料)。
>>本文地址:http://m.hqfphsz.com/zhuanye/2020/61672.html
聲明:本站稿件版權(quán)均屬中公教育優(yōu)就業(yè)所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
1 您的年齡
2 您的學歷
3 您更想做哪個方向的工作?