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)
return
與print
有何不同?
return
和print
的作用不同。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