【掌握Python的def函數】從基礎到應用的徹底解析

1. 什麼是Python中的def

Python中的def關鍵字用於定義函數。函數是一種提高代碼重用性並使程式更有條理的基本結構。通過def,可以創建執行特定任務的代碼塊,並多次重複使用它。這樣可以提高代碼的可讀性並降低錯誤發生的機率。

def關鍵字的基本語法

基本語法如下:

def 函數名稱(參數1, 參數2, ...):
    處理
    return 回傳值

def後面指定函數名稱,然後在括號內列出所需參數。接著在冒號之後,以縮排的方式撰寫函數內容。必要時,可以使用return語句返回值。

2. def的基本語法與使用方法

如何定義基本函數

使用def關鍵字定義函數時,需要指定函數名稱、參數列表和處理內容。例如,以下程式碼展示了一個輸出「Hello, World!」的基本函數。

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

呼叫此函數say_hello()時,它會在控制台上顯示「Hello, World!」。

縮排的重要性

在Python中,縮排非常重要。所有寫在函數內的代碼都必須使用相同級別的縮排。縮排用於區分代碼的層級和區塊,因此縮排錯誤會導致程式出錯。

函數的呼叫

定義好的函數可以通過函數名稱加括號的方式來呼叫。如果函數有參數,需要在括號內指定參數。

say_hello()

 

3. 函數的參數與預設值

位置參數與關鍵字參數

函數可以接受參數,參數分為位置參數和關鍵字參數。位置參數按順序傳遞,在呼叫函數時會按照指定順序處理。關鍵字參數則使用名稱指定,與順序無關。

def greet(name, greeting="Hello"):
    print(f"{greeting}, {name}!")

在上述函數中,greeting設置了預設值,因此呼叫greet("Alice")時會輸出 “Hello, Alice!”。

可變長度參數

有時候,函數需要接受不固定數量的參數。Python通過*args**kwargs來處理可變長度參數。

def print_args(*args):
    for arg in args:
        print(arg)

print_args(1, 2, 3)

在此例中,*args將所有傳入參數作為元組接收。

4. 使用return語句返回值

return語句的用法

如果希望函數返回計算結果,可以使用return語句。如果沒有return語句,函數將默認返回None

def add(a, b):
    return a + b

result = add(3, 4)
print(result)  # 7

此函數add返回兩個數字的和。透過return語句,可以將結果存儲到變數中以供後續使用。

返回多個值

Python函數還可以返回多個值。這些值會以元組的形式返回,可以使用逗號分隔來接收它們。

def swap(a, b):
    return b, a

x, y = swap(1, 2)
print(x, y)  # 2 1

5. 變數的作用域與生命週期

區域變數與全域變數

函數內定義的變數稱為區域變數,只能在該函數內使用。函數外定義的變數稱為全域變數,可以在整個程式中使用。

x = "global"

def func():
    x = "local"
    print(x)

func()      # local
print(x)    # global

此例中,函數func內定義的x是區域變數,不會影響外部的全域變數。

global關鍵字

若需要在函數內修改全域變數,可以使用global關鍵字。

x = "global"

def change_global():
    global x
    x = "changed"

change_global()
print(x)  # changed

6. 實踐範例與應用

提高程式效率的函數

使用函數可以顯著提高程式的效率。例如,將重複的計算或數據處理封裝到函數中,可以避免代碼重複。

def calculate_area(radius):
    return 3.14 * radius * radius

area1 = calculate_area(5)
area2 = calculate_area(10)

此例中,我們定義了一個計算圓面積的函數calculate_area,可以根據需要多次使用。

7. 高級函數概念

嵌套函數

Python允許在函數內定義其他函數,這些函數稱為嵌套函數,只能在外層函數內部訪問。

def outer():
    def inner():
        print("這是內部函數")
    inner()

匿名函數(Lambda)

使用lambda關鍵字,可以定義匿名函數。這在需要臨時函數時特別有用。

square = lambda x: x * x
print(square(5))  # 25

8. 總結

本文介紹了如何使用Python的def關鍵字來定義函數,包括參數、回傳值、作用域及高級概念等內容。透過合理使用函數,可以讓程式更加高效和有條理。請參考這篇文章,創建各種函數來提高您的Python編程技能。

9. 常見問題(FAQs)

returnprint有何不同?

returnprint的作用不同。return將值返回給程式的其他部分使用,例如將結果存儲在變數中。而print僅將結果顯示在控制台,不能供程式的其他部分使用。

def add(a, b):
    return a + b

result = add(3, 4)  # result儲存的是7
print(result)  # 7

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

display_message()  # 在控制台顯示 "Hello, World!",但不返回值。

為什麼要使用嵌套函數?

嵌套函數可以在外部函數內部定義內部函數,這有助於代碼的封裝與重用。內部函數只能在外部函數中使用,從而提高代碼的安全性和可維護性。

def outer_function():
    def inner_function():
        print("內部函數被呼叫")
    inner_function()

outer_function()  # 內部函數被呼叫

何時應該使用可變參數?

當函數需要接受不固定數量的參數時,可以使用可變參數。例如,計算任意數量的數值總和。

def add_all(*args):
    return sum(args)

result = add_all(1, 2, 3, 4, 5)  # 15

如何使用遞迴函數?

遞迴函數是指函數內部呼叫自身,通常用於處理需要重複操作的問題。例如,計算階乘。

def factorial(n):
    if n == 0:
        return 1
    else:
        return n * factorial(n-1)

result = factorial(5)  # 120