爲什麼需要函數?¶
在編程中,函數就像一個“代碼工具包”。如果你需要重複執行某段代碼(比如打印問候語、計算兩個數的和),直接寫重複的代碼會讓程序變得冗長且難以維護。函數可以幫你把這段代碼“打包”起來,起個名字,之後直接調用這個名字就能執行,既節省時間又能保證代碼的一致性。
函數的基本語法¶
Python中定義函數非常簡單,核心是使用 def 關鍵字,語法結構如下:
def 函數名(參數1, 參數2, ...):
"""函數的功能說明(可選,但推薦)"""
# 函數體:具體要執行的代碼(必須縮進)
語句1
語句2
# 返回結果(可選)
return 結果
def:定義函數的關鍵字,不能省略。- 函數名:自定義,需符合變量命名規則(字母、數字、下劃線,不能以數字開頭,不能用Python關鍵字如
if、for)。 - 參數:括號內的變量(如
name、a、b),用於接收外部傳入的數據(如果不需要參數,括號也可留空)。 - 函數體:冒號後的代碼塊,必須縮進(通常4個空格),這是Python區分代碼塊的關鍵。
return:返回函數執行結果(如果沒有return,默認返回None)。
定義你的第一個函數¶
示例1:最簡單的“無參數、無返回值”函數¶
比如,定義一個函數打印一句問候語:
# 定義函數
def say_hello():
# 函數體:縮進4個空格
print("Hello, Python!")
print("這是我的第一個函數~")
調用函數:直接寫函數名加括號(即使無參數):
# 調用函數
say_hello()
輸出結果:
Hello, Python!
這是我的第一個函數~
示例2:帶參數和返回值的函數¶
定義一個函數計算兩個數的和:
# 定義函數,參數a和b
def add_numbers(a, b):
result = a + b # 計算兩數之和
return result # 返回結果
調用函數:需要傳入兩個參數(位置對應):
# 調用函數並接收返回值
sum_result = add_numbers(3, 5)
print("3 + 5 =", sum_result) # 輸出:3 + 5 = 8
函數調用的關鍵點¶
- 參數傳遞:必須按定義時的順序傳遞參數(位置參數),也可以用
參數名=值的形式傳遞(關鍵字參數)。
def greet(name, message):
print(f"{message}, {name}!")
greet("Alice", "Good morning") # 位置參數
greet(message="Good evening", name="Bob") # 關鍵字參數(順序可換)
- 返回值處理:函數的返回值需要用變量接收,否則無法使用。
def multiply(x, y):
return x * y
product = multiply(4, 5) # 必須接收返回值
print(product) # 輸出:20
- 無返回值:如果函數沒有
return,調用後不會得到結果,但仍會執行函數體。
def print_hi():
print("Hi there!")
result = print_hi() # 執行後無返回值,result = None
print(result) # 輸出:None
常見問題與注意事項¶
- 縮進錯誤:函數體必須縮進(4個空格),否則Python會報錯。
def add(a, b):
print(a + b) # 錯誤!沒有縮進,會報 IndentationError
-
函數名重複:如果多次定義同名函數,後面的會覆蓋前面的,需注意命名唯一性。
-
參數不匹配:調用時參數數量必須與定義時一致(除非有默認參數)。
def greet(name):
print(f"Hello, {name}")
greet("Charlie") # 正確(1個參數)
greet("Charlie", "Bob") # 錯誤(2個參數,定義時只有1個)
小練習:動手寫一個函數¶
嘗試定義一個函數 area_of_rectangle,接收長和寬作爲參數,返回矩形面積。然後調用函數驗證結果:
# 定義函數
def area_of_rectangle(length, width):
return length * width
# 調用函數,傳入參數
length = 5
width = 3
area = area_of_rectangle(length, width)
print(f"矩形面積:{area}") # 預期輸出:15
總結¶
函數是Python代碼複用的核心工具,掌握定義和調用函數後,你可以把複雜邏輯拆分成獨立模塊,讓代碼更簡潔、易維護。後續還可以學習參數默認值、關鍵字參數、可變參數等進階用法,但打好基礎(理解縮進、參數、返回值)是關鍵哦!