Python 位置參數、關鍵字參數和默認參數詳解 [Python Function][Python 位置參數][Python 關鍵字參數][Python 默認參數]

您的“關注”和“點贊”,是信任,是認可,是支持,是動力…

如意見相佐,可留言。
本人必將竭盡全力試圖做到準確和全面,終其一生進行修改補充更新。

1 Python 位置參數

1.1 Python 位置參數概述

Python 位置參數,也稱必備參數。

指的是在調用函數時正確傳入函數的實際參數,傳入的實際參數要與定義函數時的形式參數保持一致,具體需要滿足以下要求:

  • 要求一:實參和形參數量必須一致
  • 要求二:實參和形參順序必須一致

1.2 要求一:實參和形參數量必須一致

在調用函數,傳入函數的實際參數的數量必須和定義函數時的形式參數的數量一致,傳多傳少 Python 解釋器都會拋出 TypeError 異常,並提示缺少必要的位置參數。

舉例如下所示:

例一,少傳實參

def info(name, age, gender):  # name、age、gender 三個形式參數
    print('姓名:', name, ';年齡:', age, ';性別:', gender)


info('阿杰', 18)  # 少傳入一個實參,會報錯

運行結果:

Traceback (most recent call last):
  File "D:/Data/ProfessionalSkills/Python/PycharmProjects/demo/demo.py", line 5, in <module>
    info('阿杰', 18)  # 少傳入一個實參
TypeError: info() missing 1 required positional argument: 'gender'

例二,多傳實參

def info(name, age, gender):  # name、age、gender 三個形式參數
    print('姓名:', name, ';年齡:', age, ';性別:', gender)


info('阿杰', 18, '男', '中國')  # 多傳入一個實參,會報錯

運行結果:

Traceback (most recent call last):
  File "D:/Data/ProfessionalSkills/Python/PycharmProjects/demo/demo.py", line 5, in <module>
    info('阿杰', 18, '男', '中國')  # 多傳入一個實參
TypeError: info() takes 3 positional arguments but 4 were given

1.3 要求二:實參和形參順序必須一致

在調用函數時,傳入實際參數的順序必須和定義函數時的形式參數順序一致,否則會產生以下兩種結果:

  • 拋出 TypeError 異常;
  • 產生的結果和預期不符。

舉例如下所示:

例一,拋出異常

def result(num1, num2):  # 形參 num1、num2
    res = num1 + num2  # 加法運算
    print(res)


result(1, '阿杰')  # 調用函數時,傳入的字符串不能和整數進行加法運算,會報錯

運行結果:

Traceback (most recent call last):
  File "D:/Data/ProfessionalSkills/Python/PycharmProjects/demo/demo.py", line 13, in <module>
    result(1, '阿杰')
  File "D:/Data/ProfessionalSkills/Python/PycharmProjects/demo/demo.py", line 9, in result
    res = num1 + num2
TypeError: unsupported operand type(s) for +: 'int' and 'str'

例二,產生的結果和預期不符

def info(name, age, gender):  # name、age、gender 三個形式參數
    print('姓名:', name, ';年齡:', age, ';性別:', gender)


info(18, '阿杰', 23)  # 傳入的實參與形參的順序不一致,不會報錯,但結果與預期不符

運行結果:

姓名: 18 ;年齡: 阿杰 ;性別: 23

2 Python 關鍵字參數

Python 關鍵字參數是指在調用函數時使用形式參數(形參)的名字來確定輸入的實際參數。

Python 關鍵字參數可以避免牢記參數位置的麻煩,令函數的調用和參數傳遞更加靈活方便。

注意:關鍵字參數必須放在所有位置參數之後,否則會報錯。

舉例如下所示:

例一,

def info(name, age, gender):  # name、age、gender 三個形式參數
    print('姓名:', name, ';年齡:', age, ';性別:', gender)


info('阿杰', gender='男', age=18)  # 使用關鍵字參數傳參:gender='男', age=18

運行結果:

姓名: 阿杰 ;年齡: 18 ;性別: 男

例二,

def info(name, age, gender):  # name、age、gender 三個形式參數
    print('姓名:', name, ';年齡:', age, ';性別:', gender)


info(name='阿杰', 18, gender='男')  # 關鍵字參數必須放在所有位置參數之後,否則會報錯。

運行結果:

  File "D:/Data/ProfessionalSkills/Python/PycharmProjects/demo/demo.py", line 5
    info(name='阿杰', 18, gender='男')
                        ^
SyntaxError: positional argument follows keyword argument

3 Python 默認參數

Python 默認參數指的是在定義函數時,直接給形式參數指定一個默認值。

如此,在調用函數時沒有給擁有默認值的形參傳遞參數,Python 解釋器也不會拋出異常,因爲該參數可以直接使用定義函數時設置的默認值。

注意:默認參數必須在所有無默認值參數之後,否則會報語法錯。

舉例如下所示:

例一,

def info(name='null', age=0, gender='男'):  # 爲 name、age、gender 三個形式參數添加默認值
    print('姓名:', name, ';年齡:', age, ';性別:', gender)


print(info.__defaults__)  # 先查看函數的形式參數的默認值,輸出結果是元組的形式
info('阿杰')  # 不給形參 age、gender 傳入實參,將顯示默認值
info('阿杰', 18, '女')  # 給擁有默認值的形參重新傳入實參,將顯示新傳入的值

運行結果:

('null', 0, '男')
姓名: 阿杰 ;年齡: 0 ;性別: 男
姓名: 阿杰 ;年齡: 18 ;性別: 女

例二,

def info(name='null', age, gender='男'):  # name、gender 兩個形式參數添加默認值。默認參數必須在所有無默認值參數之後,否則會報語法錯。
    print('姓名:', name, ';年齡:', age, ';性別:', gender)

運行結果:

  File "D:/Data/ProfessionalSkills/Python/PycharmProjects/demo/demo.py", line 1
    def info(name='null', age, gender='男'):  # name、age、gender 三個形式參數
             ^
SyntaxError: non-default argument follows default argument

【友情鏈接】

微信公衆號:碼農阿杰

博客園

【參考資料】

Python 官網

Python 3.8.2 documentation

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章