Python 中函數是組織好的、可重復使用的代碼塊,用于實現單一或相關聯的功能。下面是函數定義和使用的完整說明:
📌 一、函數定義語法
def 函數名(參數1, 參數2=默認值, *args, **kwargs):"""函數說明文檔"""函數體return 返回值
? 二、簡單示例
def greet(name):return f"Hello, {name}!"result = greet("Alice")
print(result) # 輸出: Hello, Alice!
🔸 三、參數類型詳解
1. 位置參數
def add(a, b):return a + bprint(add(3, 5)) # 輸出 8
2. 默認參數
def greet(name, message="Hi"):return f"{message}, {name}!"print(greet("Tom")) # Hi, Tom!
print(greet("Tom", "Hello")) # Hello, Tom!
3. 可變參數 (*args
)
args是可以自己命名的,這里的類型是元組(tuple)
tuple的特點
def sum_all(*args):return sum(args)print(sum_all(1, 2, 3)) # 6
4. 關鍵字參數 (**kwargs
)
適用于字典類型的入參,kwargs是可以自己命名的,這里的類型是字典(dict)
def show_info(**kwargs):for key, value in kwargs.items():print(f"{key}: {value}")show_info(name="Alice", age=30)
# 輸出:
# name: Alice
# age: 30
🔁 四、返回值
單值返回:
def square(x):return x * x
多值返回(返回元組):
def get_user():return "Tom", 25name, age = get_user()
?? 五、函數作為變量傳遞
def say_hello():print("Hello")greet = say_hello
greet() # Hello
📖 六、帶文檔的函數
def square(x):"""返回數字的平方"""return x * xprint(square.__doc__) # 返回函數說明文檔
? 七、匿名函數(lambda)
square = lambda x: x * x
print(square(5)) # 25
常用于排序、過濾等場景:
nums = [3, 1, 2]
nums.sort(key=lambda x: -x)
🧠 八、函數的好習慣
- 使用明確的函數名和參數名
- 編寫函數文檔字符串(
"""說明文字"""
) - 盡量保持函數短小和單一職責
下面是幾道精選的 Python 函數練習題,每道題都有題目說明和 提示,適合鞏固函數的定義與使用。
🧪 練習題 1:寫一個求最大值的函數
題目:編寫一個函數 get_max(a, b)
,返回兩個數中的最大值。
def get_max(a, b):# TODO: 返回較大的那個數passprint(get_max(10, 20)) # 應該輸出 20
? 提示:使用 if...else
判斷大小。
🧪 練習題 2:列表求和(可變參數)
題目:編寫一個函數 sum_all(*args)
,接收任意數量的參數,并返回它們的總和。
def sum_all(*args):# TODO: 返回所有參數的總和passprint(sum_all(1, 2, 3)) # 輸出 6
print(sum_all(5, 10, 15, 20)) # 輸出 50
? 提示:使用 sum()
函數或 for
循環遍歷 args
。
🧪 練習題 3:計算 BMI 指數
題目:寫一個函數 bmi(weight, height)
,根據體重(kg)和身高(米)計算 BMI = 體重 / 身高2。
def bmi(weight, height):# TODO: 返回 BMI 指數passprint(bmi(60, 1.7)) # 應該輸出大約 20.76
? 提示:BMI 的單位是 kg/m2,保留小數可用 round(bmi, 2)
。
🧪 練習題 4:歡迎語(帶默認參數)
題目:定義一個函數 greet(name, message="Hello")
,默認打招呼用 “Hello”,可以自定義問候語。
def greet(name, message="Hello"):# TODO: 打印 message, name!passgreet("Tom") # Hello, Tom!
greet("Alice", "Hi") # Hi, Alice!
🧪 練習題 5:分析用戶信息(關鍵字參數)
題目:定義函數 print_info(**kwargs)
,可以接受任意鍵值對,并打印它們。
kwargs也可以叫其他名字主要是前面有**標識
def print_info(**kwargs):# TODO: 遍歷打印每一個 key: valuepassprint_info(name="Tom", age=22, city="Shanghai")
? 提示:用 for key, value in kwargs.items()
遍歷。
可以嘗試把這些函數寫進一個 .py
文件里,比如 my_functions.py
python my_functions.py