如何在 Python 中調用函數:終極指南

如何在 Python 中調用函數:終極指南

函數是編程中的一個基本概念,它使您能夠管理和重用代碼塊。了解如何在 Python 中調用函數是一項需要學習的關鍵技能。

在本教程中,您將學習調用函數的基礎知識,以及編寫更易於理解的高效代碼的一些技巧。

掌握函數不僅可以幫助您創建更通用的代碼,還可以簡化您的編程過程並提高您作為開發人員的整體效率。

函數具有相同的基本原理,一旦掌握了 Python 中的函數,與 Java、R、JavaScript、PHP 等其他編程語言相比,您將能夠擴展對函數的理解。

如何在 Python 中調用函數:終極指南

目錄

什麼是函數?

Python 中的函數允許您創建可在整個程序中調用的可重用代碼片段,從而簡化代碼並提高可讀性。它執行特定任務或一組任務,並且可以在程序中多次調用。 

在 Python 中定義一個函數

Python 中主要有兩類函數:

  • 用戶定義函數:程序員定義的函數,以避免代碼重複
  • 內置函數:由其他人定義的函數,在安裝必要的包後可以在您的代碼中使用

Python 教程的這一部分重點介紹用戶定義的函數。你會學到:

  • 如何在 Python 中定義一個函數
  • 函數語法
  • 如何使用參數和參數

函數語法

關鍵字def ,後跟函數名稱和括號,允許您在 Python 中定義函數。函數體是縮進的,包含調用函數時要執行的代碼。下面給出了 Python 中的一個基本函數的例子:

def greet(): print("Hello, World!") greet()

關鍵字def 定義了一個名為 greet 的新函數。第三行代碼調用函數,執行函數內部的代碼。

如何在 Python 中調用函數:終極指南

print上面代碼中的那一行也是一個函數。但是,如果您在 Python 2 環境中工作,則它被定義為一個語句。後來,在 Python 3 中,它從語句變成了函數。

參數和參數

參數是函數定義中的佔位符,而參數是調用函數時傳遞的值。

要指定參數,請將它們包含在函數定義的括號內,如果有多個參數,則用逗號分隔。調用函數時,您提供稱為參數的輸入值。以下示例演示了定義一個帶有兩個參數的函數:

def add_numbers(a, b): 返回 a+b

函數主體中的語句return 返回傳遞給它的兩個參數的加法。您可以將其視為一個計算器,您可以在其中輸入值並獲得所需的結果作為回報。

定義函數後,我們可以使用我們選擇的參數調用它。

添加數字(3、5)

如何在 Python 中調用函數:終極指南

kwargs 參數

kwargs 是 Python 中“關鍵字參數”的縮寫。它允許調用者在調用函數時指定任意數量的關鍵字參數,從而擴展函數的靈活性。關鍵字參數作為字典傳遞給函數。

**在函數定義中,您可以在參數名稱前使用雙星號語法來接受關鍵字參數。

def my_function(**kwargs): for key, value in kwargs.items(): print(f"{key} = {value}") my_function(a=1, b=2, c=3)

在此示例中,kwargs 將是一個包含傳遞給函數的關鍵字參數的字典。輸出如下圖所示:

如何在 Python 中調用函數:終極指南

調用函數

調用函數意味著執行函數體內的代碼。Python 中有四種類型的函數調用:

  • 基本函數調用
  • 使用位置參數調用
  • 使用關鍵字參數調用

基本函數調用

基本函數調用調用函數而不向函數傳遞任何參數。定義函數後,您可以使用其名稱後跟圓括號來調用它。

如果函數不接受任何參數,則括號將為空。下面的代碼是一個基本功能的例子。

def welcome_message(): print("歡迎來到 LuckyTemplates!") welcome_message()

運行上面的代碼會得到以下輸出:

如何在 Python 中調用函數:終極指南

位置參數

位置參數是最常見的參數類型,它們按照指定的順序傳遞給函數。以下是帶有位置參數的函數調用示例:

def welcome_message(name): print(f"Welcome to LuckyTemplates, {name}!") welcome_message("John")

在上面的例子中,welcome_message()函數接受一個參數,name. 當您使用參數調用此函數時John,它將在名稱旁邊打印消息。

上面的代碼給出了以下輸出:

如何在 Python 中調用函數:終極指南

關鍵字參數

將參數傳遞給函數的另一種方法是使用關鍵字參數。關鍵字參數允許您指定參數的名稱及其值,使代碼更具可讀性並減少以錯誤順序傳遞參數的機會。 

下面的示例使用關鍵字參數來調用welcome_message函數:

def welcome_message(name, message='Welcome to LuckyTemplates!'): print(message, name) welcome_message(name='Alice', message='早上好')

在此示例中,我們定義了一個welcome_message()具有兩個參數name和 的函數message。消息參數有一個默認參數Welcome to LuckyTemplates!調用函數時,我們使用關鍵字參數傳遞值John,導致輸出Welcome to LuckyTemplates! John.

如何在 Python 中調用函數:終極指南

返回值

使用函數時,您通常希望返回函數體內的操作結果。返回值允許函數將結果發送回調用者。通過了解如何使用單個和多個返回值,您可以增強 Python 程序的功能。

單一返回值

單個返回值函數從函數中的操作返回一個值。

下面給出了單個返回值函數的示例:

def get_greeting(name): 返回“你好,”+姓名+“!” 問候語 = get_greeting("愛麗絲") 打印(問候語)

在上面的示例中,該函數get_greeting將名稱作為其函數參數對其進行編譯並返回個性化的問候語。然後將返回值存儲在變量greeting中並打印到控制台。

如何在 Python 中調用函數:終極指南

多個返回值

有時,您需要從 Python 中的函數返回多個值。為此,您可以使用元組或列表來包裝返回值。

以下是 Python 編程語言中多返回值函數的示例。

def get_name_and_age(): return ("John", 30) name, age = get_name_and_age() print(name) 打印(age)

如何在 Python 中調用函數:終極指南

在此示例中,get_name_and_age是一個返回具有兩個值的元組的函數:aname 和 an age

您還可以從 Python 中的函數返回值列表。下面的函數演示了函數的列表返回值。

def calculate_areas(height, width): return [height * width, (height * width) / 2] 面積, triangle_area = calculate_areas(10, 5) print(area) print(triangle_area)

如何在 Python 中調用函數:終極指南

在本例中,該函數calculate_areas採用兩個參數 ,heightwidth,並返回一個包含矩形面積和三角形面積的列表。

將 Python 函數作為參數傳遞

Python 允許您將函數作為參數傳遞給其他函數。當一個函數接受另一個函數作為參數時,它被稱為高階函數。

下面的代碼是在 Python 中將一個函數傳遞給另一個函數的示例:

def square(x): 返回 x * x def double(x): 返回 x * 2 def apply_func(func, x): 返回 func(x) result = apply_func(square, 5)

如何在 Python 中調用函數:終極指南

嵌套函數

嵌套函數是在另一個函數中定義的函數,也稱為內部函數。這些在創建閉包和模塊化代碼時很有用。 

要創建嵌套函數,只需在另一個函數中定義一個函數:

def outer_function(x, y): def inner_function(z): return x + y + z result = inner_function(3) return result # 調用外函數 print(outer_function(1, 2))

在上面的示例中,inner_function 是在 outer_function 中定義的。內部函數可以訪問外部函數的變量,允許它對它們執行操作。

如何在 Python 中調用函數:終極指南

拉姆達函數

Lambda 函數,也稱為匿名函數,是一種在 Python 中創建小型一次性函數的方法。在數據科學項目中,您將經常使用 Lambda 函數來創建高效的數據結構和管道。

要創建 lambda 函數,您可以使用 lambda 關鍵字,後跟參數列表、冒��和表達式。表達式是 lambda 函數在調用後將返回的內容。以下是 Python 中的 lambda 函數示例:

add = lambda a, b: a + b result = add(3, 4) print(result) # 輸出:7

在上面的示例中,我們創建了一個 lambda 函數,它接受兩個參數 (a b) 並返回它們的和。我們將此 lambda 函數分配給一個名為 的變量add

如何在 Python 中調用函數:終極指南

Lambda 在以下場景中很有用:

  • 作為 map()、filter() 和 sorted() 等高階函數的參數。
  • 作為排序列表或字典時的關鍵功能。

以下示例演示了將高階函數 filter() 與 lambda 結合使用:

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9] even_numbers = list(filter(lambda x: x % 2 == 0, numbers)) print(even_numbers) # 輸出:[2, 4, 6, 8]


在此示例中,我們使用 lambda 函數來定義 filter() 函數的過濾條件。lambda 函數檢查數字是否為偶數,filter() 函數返回一個僅包含偶數的新列表。

如何在 Python 中調用函數:終極指南

要查看函數如何在不同的數據科學場景中發揮作用的示例,請觀看下面給出的視頻:

遞歸

遞歸是一種函數調用自身的編程技術。通過將復雜問題分解為更小、相同的子問題,這可能是解決複雜問題的有用方法。

創建遞歸函數時,需要牢記兩點:基本情況和遞歸情況。 

  • 基本情況是停止遞歸的條件
  • 遞歸情況是函數調用自身的地方。遞歸案例充當函數的迭代器

以下示例演示了 Python 中的遞歸函數:

def factorial(n): 如果 n == 1: return 1 return n * factorial(n - 1) factorial(5)

在此示例中,基本情況是 when n == 1,函數返回1。遞歸情況發生在 n 不等於 1 時,函數用 調用自身n - 1

如何在 Python 中調用函數:終極指南

常見錯誤和故障排除

如果您是初級程序員,在實現遞歸函數和 lambda 函數等函數時經常會遇到錯誤。以下部分重點介紹了一些常見錯誤和故障排除提示,以幫助您有效地解決這些問題。

1. TypeError: missing a required argument:當您沒有提供函數期望的正確數量的參數時,會發生此錯誤。

def my_function(fname, lname): print(fname, lname) # 正確調用 my_function("John", "Doe") # 會引發錯誤 my_function("John")

如何在 Python 中調用函數:終極指南

要修復此錯誤,請確保將正確數量的參數傳遞給函數。

2. TypeError: unsupported operand type。當您嘗試使用具有不兼容類型的運算符時,可能會發生此錯誤。

def add_number(a, b): return a + b # 正確調用 result = add_number(5, 3) print(result) # 由於不正確的參數將引發錯誤 result = add_number("5", 3) print(result)

如何在 Python 中調用函數:終極指南

要修復此錯誤,請檢查您的函數是否正在處理正確的數據類型,並在必要時考慮使用類型轉換

3. NameError: name 'function_name' is not defined : 這個錯誤表明函數在被調用之前沒有被定義。 

# 正確的順序 def greet(): print("Hello, there!") greet() # 錯誤的順序 goodbye() def goodbye(): print("Goodbye!")

如何在 Python 中調用函數:終極指南

要修復此錯誤,請確保您的函數已正確定義並在其定義後調用它。

結論

為了回顧並幫助您鞏固理解,以下幾點總結了在 Python 中調用函數的關鍵方面:

  • 要調用函數,請使用函數名稱後跟圓括號(例如,function_name())。
  • 如果函數接受參數,請將它們包含在括號中(例如,function_name(arg1, arg2))。
  • 您可以使用 def 關鍵字創建自己的函數,定義函數的範圍和任何必需的參數。
  • 當調用一個返回值的函數時,您可以將結果賦給一個變量供以後使用(例如,result = function_name(args))。

什麼是 Python 中的自我:真實世界的例子

什麼是 Python 中的自我:真實世界的例子

什麼是 Python 中的自我:真實世界的例子

如何在 R 中保存和加載 RDS 文件

如何在 R 中保存和加載 RDS 文件

您將學習如何在 R 中保存和加載 .rds 文件中的對象。本博客還將介紹如何將對像從 R 導入 LuckyTemplates。

回顧前 N 個工作日——DAX 編碼語言解決方案

回顧前 N 個工作日——DAX 編碼語言解決方案

在此 DAX 編碼語言教程中,了解如何使用 GENERATE 函數以及如何動態更改度量標題。

在 LuckyTemplates 中使用多線程動態視覺技術展示見解

在 LuckyTemplates 中使用多線程動態視覺技術展示見解

本教程將介紹如何使用多線程動態可視化技術從報告中的動態數據可視化中創建見解。

LuckyTemplates 篩選上下文簡介

LuckyTemplates 篩選上下文簡介

在本文中,我將貫穿過濾器上下文。篩選上下文是任何 LuckyTemplates 用戶最初應該了解的主要主題之一。

使用 LuckyTemplates 在線服務中的應用程序的最佳技巧

使用 LuckyTemplates 在線服務中的應用程序的最佳技巧

我想展示 LuckyTemplates Apps 在線服務如何幫助管理從各種來源生成的不同報告和見解。

隨著時間的推移分析利潤率變化——使用 LuckyTemplates 和 DAX 進行分析

隨著時間的推移分析利潤率變化——使用 LuckyTemplates 和 DAX 進行分析

了解如何在 LuckyTemplates 中使用度量分支和組合 DAX 公式等技術計算利潤率變化。

DAX Studio 中數據緩存的物化想法

DAX Studio 中數據緩存的物化想法

本教程將討論數據緩存物化的想法,以及它們如何影響 DAX 在提供結果時的性能。

使用 LuckyTemplates 進行業務報告

使用 LuckyTemplates 進行業務報告

如果直到現在你還在使用 Excel,那麼現在是開始使用 LuckyTemplates 來滿足你的業務報告需求的最佳時機。

什麼是 LuckyTemplates 網關?所有你必須知道的

什麼是 LuckyTemplates 網關?所有你必須知道的

什麼是 LuckyTemplates 網關?所有你必須知道的