>>defstudent_grade(name,grade,has_bonus): ifhas_b ">
1、關鍵字參數
關鍵字參數是按照名稱傳遞參數的,而與參數的位置無關,它使用類似給變量賦值的方式調用。以student_grade()函數為例,使用關鍵字參數調用:
- >>> def student_grade(name, grade, has_bonus):
- ... if has_bonus:
- ... grade += 10
- ... if grade > 100:
- ... grade = 100
- ... print('{name}的成績為{grade}'.format(name=name, grade=grade))
- ...
- >>> student_grade(name='Ming', grade=79, has_bonus=False)
- Ming的成績為79
使用關鍵字參數調用函數時,參數的位置變得無關緊要,只要參數的名字是正確的,函數就能夠正常調用:
- >>> student_grade(grade=80, has_bonus=True, name='Ming')
- Ming的成績為90
- >>> student_grade(has_bonus=True, name='Ming', grade=99)
- Ming的成績為100
關鍵字參數和位置參數還可以混用,下面都是合法的調用方式:
- >>> student_grade('Ming', grade=79, has_bonus=False)
- Ming的成績為79
- >>> student_grade('Ming', 79, has_bonus=False)
- Ming的成績為79
混用關鍵字參數和位置參數使得調用函數變得更加靈活,但是有一種情況是不合法的,即關鍵字參數出現在位置參數的前面:
- >>> student_grade(name='Ming', bonus=False, 59)
- File "
" , line 1- SyntaxError: positional argument follows keyword argument
Python解釋器提示出錯了,因為位置參數跟在了關鍵字參數后面。
說明
無論是位置參數還是關鍵字參數,都是函數在調用時使用的說法,也就是實參,稱它們為位置實參和關鍵字參數更準確。
2、參數的默認值
在創建自定義函數時,可以給參數提供默認值。如果在調用函數時指定了參數的值,那么使用該值,否則使用默認值。在之前的student_grade()基礎上稍作修改,給has_bonus參數提供一個默認值:False,即默認沒有10分的獎勵分:
- >>> def student_grade_v1(name, grade, has_bonus=False):
- ... if has_bonus:
- ... grade += 10
- ... if grade > 100:
- ... grade = 100
- ... print('{name}的成績為{grade}'.format(name=name, grade=grade))
- ...
在調用函數時,可以不指定has_bonus參數的值:
- >>> student_grade_v1('Ming', 59)
- Ming的成績為59
當然也可以指定has_bonus參數的值,此時has_bonus的值為指定的值,可以使用關鍵字參數或者位置參數:
- >>> student_grade_v1('Ming', 59, True)
- Ming的成績為69
- >>> student_grade_v1('Ming', 59, bonus=True)
- Ming的成績為69
下面是一個有更多參數默認值的示例:
- >>> 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))
- ...
這個函數比之前的要復雜一些,它會根據用戶提供的信息,打印一些個性化的句子。因為此函數有很多參數,所以合法的調用方式有很多,以下是其中的一些:
- >>> personal_info('梅梅') # 一個位置參數,即名字,其他參數使用默認值
- 梅梅是個女孩。
- 她最喜歡的寵物是狗。
- 她不戴眼鏡。
- >>> personal_info(name='梅梅') # 一個關鍵字參數
- 梅梅是個女孩。
- 她最喜歡的寵物是狗。
- 她不戴眼鏡。
- >>> personal_info('梅梅', has_glasses=True) # 一個關鍵字參數和一個位置參數
- 梅梅是個女孩。
- 她最喜歡的寵物是狗。
- 她戴眼鏡。
- >>> personal_info(name='小明', gender='男') # 兩個關鍵字參數
- 小明是個男孩。
- 他最喜歡的寵物是狗。
- 他不戴眼鏡。
- >>> personal_info(pet='貓', name='梅梅') # 兩個關鍵字參數
- 梅梅是個女孩。
- 她最喜歡的寵物是貓。
- 她不戴眼鏡。
- >>> personal_info('小明', '男', '貓', True) # 四個位置參數
- 小明是個男孩。
- 他最喜歡的寵物是貓。
- 他戴眼鏡。
如果對Python開發感興趣或者想要深入學習的現在可以免費領取學習大禮包哦(點擊領取80G課程資料 備注:領資料)。
>>本文地址:http://www.jecan.cn/zhuanye/2020/61672.html
聲明:本站稿件版權均屬中公教育優就業所有,未經許可不得擅自轉載。
1 您的年齡
2 您的學歷
3 您更想做哪個方向的工作?