什麼是 Python 中的自我:真實世界的例子
什麼是 Python 中的自我:真實世界的例子
函數是編程中的一個基本概念,它使您能夠管理和重用代碼塊。了解如何在 Python 中調用函數是一項需要學習的關鍵技能。
在本教程中,您將學習調用函數的基礎知識,以及編寫更易於理解的高效代碼的一些技巧。
掌握函數不僅可以幫助您創建更通用的代碼,還可以簡化您的編程過程並提高您作為開發人員的整體效率。
函數具有相同的基本原理,一旦掌握了 Python 中的函數,與 Java、R、JavaScript、PHP 等其他編程語言相比,您將能夠擴展對函數的理解。
目錄
什麼是函數?
Python 中的函數允許您創建可在整個程序中調用的可重用代碼片段,從而簡化代碼並提高可讀性。它執行特定任務或一組任務,並且可以在程序中多次調用。
在 Python 中定義一個函數
Python 中主要有兩類函數:
Python 教程的這一部分重點介紹用戶定義的函數。你會學到:
函數語法
關鍵字def
,後跟函數名稱和括號,允許您在 Python 中定義函數。函數體是縮進的,包含調用函數時要執行的代碼。下面給出了 Python 中的一個基本函數的例子:
def greet(): print("Hello, World!") greet()
關鍵字def
定義了一個名為 greet 的新函數。第三行代碼調用函數,執行函數內部的代碼。
print
上面代碼中的那一行也是一個函數。但是,如果您在 Python 2 環境中工作,則它被定義為一個語句。後來,在 Python 3 中,它從語句變成了函數。
參數和參數
參數是函數定義中的佔位符,而參數是調用函數時傳遞的值。
要指定參數,請將它們包含在函數定義的括號內,如果有多個參數,則用逗號分隔。調用函數時,您提供稱為參數的輸入值。以下示例演示了定義一個帶有兩個參數的函數:
def add_numbers(a, b): 返回 a+b
函數主體中的語句return
返回傳遞給它的兩個參數的加法。您可以將其視為一個計算器,您可以在其中輸入值並獲得所需的結果作為回報。
定義函數後,我們可以使用我們選擇的參數調用它。
添加數字(3、5)
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 中有四種類型的函數調用:
基本函數調用
基本函數調用調用函數而不向函數傳遞任何參數。定義函數後,您可以使用其名稱後跟圓括號來調用它。
如果函數不接受任何參數,則括號將為空。下面的代碼是一個基本功能的例子。
def welcome_message(): print("歡迎來到 LuckyTemplates!") welcome_message()
運行上面的代碼會得到以下輸出:
位置參數
位置參數是最常見的參數類型,它們按照指定的順序傳遞給函數。以下是帶有位置參數的函數調用示例:
def welcome_message(name): print(f"Welcome to LuckyTemplates, {name}!") welcome_message("John")
在上面的例子中,welcome_message()
函數接受一個參數,name
. 當您使用參數調用此函數時John
,它將在名稱旁邊打印消息。
上面的代碼給出了以下輸出:
關鍵字參數
將參數傳遞給函數的另一種方法是使用關鍵字參數。關鍵字參數允許您指定參數的名稱及其值,使代碼更具可讀性並減少以錯誤順序傳遞參數的機會。
下面的示例使用關鍵字參數來調用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 程序的功能。
單一返回值
單個返回值函數從函數中的操作返回一個值。
下面給出了單個返回值函數的示例:
def get_greeting(name): 返回“你好,”+姓名+“!” 問候語 = get_greeting("愛麗絲") 打印(問候語)
在上面的示例中,該函數get_greeting
將名稱作為其函數參數對其進行編譯並返回個性化的問候語。然後將返回值存儲在變量greeting中並打印到控制台。
多個返回值
有時,您需要從 Python 中的函數返回多個值。為此,您可以使用元組或列表來包裝返回值。
以下是 Python 編程語言中多返回值函數的示例。
def get_name_and_age(): return ("John", 30) name, age = get_name_and_age() print(name) 打印(age)
在此示例中,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)
在本例中,該函數calculate_areas
採用兩個參數 ,height
和width
,並返回一個包含矩形面積和三角形面積的列表。
將 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)
嵌套函數
嵌套函數是在另一個函數中定義的函數,也稱為內部函數。這些在創建閉包和模塊化代碼時很有用。
要創建嵌套函數,只需在另一個函數中定義一個函數:
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 中定義的。內部函數可以訪問外部函數的變量,允許它對它們執行操作。
拉姆達函數
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
。
Lambda 在以下場景中很有用:
以下示例演示了將高階函數 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 中的遞歸函數:
def factorial(n): 如果 n == 1: return 1 return n * factorial(n - 1) factorial(5)
在此示例中,基本情況是 when n == 1
,函數返回1
。遞歸情況發生在 n 不等於 1 時,函數用 調用自身n - 1
。
常見錯誤和故障排除
如果您是初級程序員,在實現遞歸函數和 lambda 函數等函數時經常會遇到錯誤。以下部分重點介紹了一些常見錯誤和故障排除提示,以幫助您有效地解決這些問題。
1. TypeError: missing a required argument:當您沒有提供函數期望的正確數量的參數時,會發生此錯誤。
def my_function(fname, lname): print(fname, lname) # 正確調用 my_function("John", "Doe") # 會引發錯誤 my_function("John")
要修復此錯誤,請確保將正確數量的參數傳遞給函數。
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)
要修復此錯誤,請檢查您的函數是否正在處理正確的數據類型,並在必要時考慮使用類型轉換
3. NameError: name 'function_name' is not defined : 這個錯誤表明函數在被調用之前沒有被定義。
# 正確的順序 def greet(): print("Hello, there!") greet() # 錯誤的順序 goodbye() def goodbye(): print("Goodbye!")
要修復此錯誤,請確保您的函數已正確定義並在其定義後調用它。
結論
為了回顧並幫助您鞏固理解,以下幾點總結了在 Python 中調用函數的關鍵方面:
function_name()
)。function_name(arg1, arg2)
)。result = function_name(args)
)。什麼是 Python 中的自我:真實世界的例子
您將學習如何在 R 中保存和加載 .rds 文件中的對象。本博客還將介紹如何將對像從 R 導入 LuckyTemplates。
在此 DAX 編碼語言教程中,了解如何使用 GENERATE 函數以及如何動態更改度量標題。
本教程將介紹如何使用多線程動態可視化技術從報告中的動態數據可視化中創建見解。
在本文中,我將貫穿過濾器上下文。篩選上下文是任何 LuckyTemplates 用戶最初應該了解的主要主題之一。
我想展示 LuckyTemplates Apps 在線服務如何幫助管理從各種來源生成的不同報告和見解。
了解如何在 LuckyTemplates 中使用度量分支和組合 DAX 公式等技術計算利潤率變化。
本教程將討論數據緩存物化的想法,以及它們如何影響 DAX 在提供結果時的性能。
如果直到現在你還在使用 Excel,那麼現在是開始使用 LuckyTemplates 來滿足你的業務報告需求的最佳時機。
什麼是 LuckyTemplates 網關?所有你必須知道的