Python 中的位置引數與關鍵字引數

Aditya Raj 2023年1月30日
  1. Python 中的引數是什麼
  2. 什麼是 Python 中的位置引數
  3. Python 中的關鍵字引數是什麼
  4. 位置引數與關鍵字引數:你應該使用什麼
  5. まとめ
Python 中的位置引數與關鍵字引數

在 Python 中呼叫函式時,我們經常需要將輸入值傳遞給它。在本文中,我們將討論 Python 中的位置引數和關鍵字引數。我們還將討論位置引數與關鍵字引數,其中我們將討論這兩種為 Python 中的函式提供輸入的方法的優缺點。

Python 中的引數是什麼

為了理解一個引數,讓我們宣告一個函式 printDetails(),它接受四個值,即一個人的 nameidentity_numberageweight,然後列印它們。

def printDetails(name, identity_number, age, weight):
    print("Name is:", name)
    print("Identity Number is:", identity_number)
    print("Age is:", age)
    print("Weight is:", weight)

這裡,nameidentity_numberageweight 被稱為函式 printDetails() 的引數。因此,我們可以說引數是函式簽名/宣告的一部分。

現在,假設我們要使用 name- Adityaidentity_number- TM2017001age- 23weight- 65 呼叫函式 printDetails() 作為輸入。我們可以這樣做。

def printDetails(name, identity_number, age, weight):
    print("Name is:", name)
    print("Identity Number is:", identity_number)
    print("Age is:", age)
    print("Weight is:", weight)


printDetails("Aditya", "TM2017001", 23, 65)

輸出:

Name is: Aditya
Identity Number is: TM2017001
Age is: 23
Weight is: 65

這裡,AdityaTM20170012365 是函式 printDetails() 的引數。函式執行後,將值 Aditya 分配給引數 name,將 TM2017001 分配給引數 identity_number,將 23 分配給引數 age,以及 65 分配給引數 weight。因此,我們可以說引數是傳遞給函式的值,而引數是在函式中宣告的變數,該變數被分配給了該變數。

要將引數分配給引數,我們可以按照引數在函式中宣告的順序傳遞值。或者,我們也可以直接將引數賦值給引數。基於此,Python 中的引數分為位置引數和關鍵字引數。讓我們一一討論它們。

什麼是 Python 中的位置引數

當我們直接將引數傳遞給函式,並根據其位置分配給引數時,則稱為位置引數。例如,當我們使用值 AdityaTM20170012365 呼叫函式 printDetails() 時,

printDetails("Aditya", "TM2017001", 23, 65)

所有輸入引數將根據它們在函式呼叫中的位置和引數在函式宣告中的位置分配給引數。讓我們一起編寫函式呼叫和函式宣告,以便更好地理解這一點。

def printDetails(name, identity_number, age, weight):
    print("Name is:", name)
    print("Identity Number is:", identity_number)
    print("Age is:", age)
    print("Weight is:", weight)


printDetails("Aditya", "TM2017001", 23, 65)

輸出:

Name is: Aditya
Identity Number is: TM2017001
Age is: 23
Weight is: 65

在這裡,你可以觀察到 printDetails() 函式具有按 nameidentity_numberageweight 順序排列的引數。因此,Aditya 被分配給 nameTM2017001 被分配給 identity_number23 被分配給 age,而 65 被分配給 weight

Python 中的關鍵字引數是什麼

我們可以將它們直接分配給引數,而不是僅在函式中傳遞值,如下所示。

printDetails(name="Aditya", identity_number="TM2017001", age=23, weight=65)

在這裡,每個引數都像一個鍵,每個引數都像一個值。因此,引數被稱為關鍵字引數。在執行時,該函式的工作方式與處理位置引數的方式相同。你可以在以下示例中觀察到這一點。

def printDetails(name, identity_number, age, weight):
    print("Name is:", name)
    print("Identity Number is:", identity_number)
    print("Age is:", age)
    print("Weight is:", weight)


printDetails(name="Aditya", identity_number="TM2017001", age=23, weight=65)

輸出:

Name is: Aditya
Identity Number is: TM2017001
Age is: 23
Weight is: 65

位置引數與關鍵字引數:你應該使用什麼

如果我們談論執行,位置引數和關鍵字引數都具有相同的效率。選擇使用這些方法中的任何一種取決於你的方便程度。

使用位置引數時,更改輸入引數的位置可能會產生不需要的結果。例如,請看以下示例。

def printDetails(name, identity_number, age, weight):
    print("Name is:", name)
    print("Identity Number is:", identity_number)
    print("Age is:", age)
    print("Weight is:", weight)


printDetails(65, "TM2017001", 23, "Aditya")

輸出:

Name is: 65
Identity Number is: TM2017001
Age is: 23
Weight is: Aditya

此處,65 已分配給引數 name,而 Aditya 已分配給引數 weight。因此,重要的是按照在函式宣告中定義相應引數的相同順序傳遞位置引數。

另一方面,我們可以在使用關鍵字引數時以任何順序傳遞引數。它不影響函式的輸出。你可以在以下示例中觀察到這一點。

def printDetails(name, identity_number, age, weight):
    print("Name is:", name)
    print("Identity Number is:", identity_number)
    print("Age is:", age)
    print("Weight is:", weight)


printDetails(weight=65, identity_number="TM2017001", age=23, name="Aditya")

輸出:

Name is: Aditya
Identity Number is: TM2017001
Age is: 23
Weight is: 65

因此,如果你想避免由於引數位置的變化而導致的任何可能的錯誤,使用關鍵字引數對你來說會更好。

我們還可以在單​​個函式呼叫中使用位置引數和關鍵字引數,如下面的程式所示。

def printDetails(name, identity_number, age, weight):
    print("Name is:", name)
    print("Identity Number is:", identity_number)
    print("Age is:", age)
    print("Weight is:", weight)


printDetails("Aditya", "TM2017001", age=23, weight=65)

輸出:

Name is: Aditya
Identity Number is: TM2017001
Age is: 23
Weight is: 65

在這裡,你可以觀察到位置引數在定義相應引數的同一位置傳遞給函式。相比之下,關鍵字引數可以按任何順序傳遞。此外,我們不能在傳遞關鍵字引數後傳遞位置引數。

一旦我們傳遞了關鍵字引數,所有剩餘的引數都需要作為關鍵字引數傳遞。否則,程式會出錯,如下例所示。

def printDetails(name, identity_number, age, weight):
    print("Name is:", name)
    print("Identity Number is:", identity_number)
    print("Age is:", age)
    print("Weight is:", weight)


printDetails("Aditya", identity_number="TM2017001", 23, weight=65)

輸出:

  File "/home/aditya1117/PycharmProjects/pythonProject/webscraping.py", line 8
    printDetails("Aditya", identity_number="TM2017001", 23, weight=65)
                                                        ^
SyntaxError: positional argument follows keyword argument

因此,你可以根據自己的方便在同一個函式呼叫中選擇位置引數或關鍵字引數,或兩者兼而有之。

まとめ

在本文中,我們研究了 Python 中的位置引數和關鍵字引數。我們還討論了位置引數與關鍵字引數,並得出結論,這兩種方法在執行效率方面是相同的。我們甚至可以在一個函式呼叫中一起使用它們。請記住,我們不能在關鍵字引數之後使用位置引數。

作者: Aditya Raj
Aditya Raj avatar Aditya Raj avatar

Aditya Raj is a highly skilled technical professional with a background in IT and business, holding an Integrated B.Tech (IT) and MBA (IT) from the Indian Institute of Information Technology Allahabad. With a solid foundation in data analytics, programming languages (C, Java, Python), and software environments, Aditya has excelled in various roles. He has significant experience as a Technical Content Writer for Python on multiple platforms and has interned in data analytics at Apollo Clinics. His projects demonstrate a keen interest in cutting-edge technology and problem-solving, showcasing his proficiency in areas like data mining and software development. Aditya's achievements include securing a top position in a project demonstration competition and gaining certifications in Python, SQL, and digital marketing fundamentals.

GitHub

相關文章 - Python Function

相關文章 - Python Argument