Python 函数使用举例:从基础到进阶
📅 2026/7/10 21:41:47
👁️ 阅读次数
📝 编程学习
1. 函数基础:定义与调用
函数是 Python 编程的核心,用于封装可重用的代码块。使用def关键字定义函数。
# 定义一个简单的函数 def greet(name): """向指定的人打招呼""" return f"Hello, {name}!" #调用函数 message = greet("Alice") print(message) # 输出:Hello, Alice!2. 参数传递:位置参数、关键字参数与默认参数
Python 函数支持多种参数传递方式,让函数调用更加灵活。
def describe_pet(pet_name, animal_type="dog"): """描述宠物信息,animal_type有默认值""" print(f"I have a {animal_type} named {pet_name}.") #位置参数 describe_pet("Buddy", "dog") # I have a dog named Buddy. #关键字参数(顺序无关) describe_pet(animal_type="cat", pet_name="Whiskers") # I have a cat named Whiskers. #使用默认参数 describe_pet("Max") # I have a dog named Max.3. 返回值:单值与多值返回
函数使用return语句返回值。Python 支持返回多个值(实际上是返回一个元组)。
def calculate_stats(numbers): """计算列表的平均值和最大值""" if not numbers: return None, None # 返回两个 None avg = sum(numbers) / len(numbers) maximum = max(numbers) return avg, maximum # 返回一个元组 #调用并解包返回值 scores = [85, 92, 78, 90, 88] average, max_score = calculate_stats(scores) print(f"平均分:{average:.2f}, 最高分:{max_score}")4. 可变参数:*args 与 **kwargs
当函数参数数量不确定时,可以使用*args接收任意数量的位置参数,**kwargs接收任意数量的关键字参数。
def make_pizza(size, *toppings, **details): """制作披萨,接受可变数量的配料和详细信息""" print(f"制作一个 {size} 寸的披萨") print("配料:") for topping in toppings: print(f"- {topping}") if details: print("额外信息:") for key, value in details.items(): print(f" {key}: {value}") #调用示例 make_pizza(12, "蘑菇", "香肠", "芝士", delivery=True, special_request="多加芝士")5. Lambda 函数(匿名函数)
Lambda 函数是简洁的单行函数,常用于需要函数对象的地方。
# 普通函数定义 def square(x): return x ** 2 #等效的 lambda 函数 square_lambda = lambda x: x ** 2 #使用示例 numbers = [1, 2, 3, 4, 5] #使用 lambda 配合 map squared = list(map(lambda x: x ** 2, numbers)) print(squared) # [1, 4, 9, 16, 25] #使用 lambda 配合 sorted(按字符串长度排序) words = ["apple", "banana", "cherry", "date"] sorted_words = sorted(words, key=lambda word: len(word)) print(sorted_words) # ['date', 'apple', 'cherry', 'banana']6. 装饰器:增强函数功能
装饰器是 Python 的高级特性,用于在不修改原函数代码的情况下增强函数功能。
import time def timer_decorator(func): """计时装饰器:测量函数执行时间""" def wrapper(*args, **kwargs): start_time = time.time() result = func(*args, **kwargs) end_time = time.time() print(f"{func.name} 执行时间:{end_time - start_time:.4f} 秒") return result return wrapper 使用装饰器 @timer_decorator def slow_function(): """模拟耗时操作""" time.sleep(1) return "任务完成" 调用被装饰的函数 result = slow_function() print(result)7. 生成器函数:yield 关键字
生成器函数使用yield关键字,可以逐步产生值,节省内存。
def fibonacci_generator(n): """生成斐波那契数列的前 n 项""" a, b = 0, 1 count = 0 while count < n: yield a a, b = b, a + b count += 1 使用生成器 print("斐波那契数列前10项:") for num in fibonacci_generator(10): print(num, end=" ") 输出:0 1 1 2 3 5 8 13 21 34 生成器表达式(类似列表推导式) squares_gen = (x**2 for x in range(5)) print(list(squares_gen)) # [0, 1, 4, 9, 16]8. 递归函数示例
递归函数调用自身来解决问题,常用于树形结构、分治算法等场景。
def factorial(n): """计算阶乘(递归实现)""" if n == 0 or n == 1: return 1 else: return n * factorial(n - 1) def fibonacci_recursive(n): """计算第 n 个斐波那契数(递归实现)""" if n <= 1: return n return fibonacci_recursive(n-1) + fibonacci_recursive(n-2) 使用示例 print(f"5的阶乘:{factorial(5)}") # 120 print(f"第10个斐波那契数:{fibonacci_recursive(10)}") # 559. 内置函数使用举例
Python 提供了丰富的内置函数,以下是一些常用示例:
# map():对可迭代对象应用函数 numbers = [1, 2, 3, 4] doubled = list(map(lambda x: x * 2, numbers)) print(doubled) # [2, 4, 6, 8] filter():过滤元素 even_numbers = list(filter(lambda x: x % 2 == 0, numbers)) print(even_numbers) # [2, 4] zip():合并多个可迭代对象 names = ["Alice", "Bob", "Charlie"] ages = [25, 30, 35] for name, age in zip(names, ages): print(f"{name} is {age} years old") enumerate():获取索引和值 for index, name in enumerate(names, start=1): print(f"{index}. {name}")10. 实际应用:数据处理函数
结合多个函数概念,创建一个实用的数据处理示例。
def process_data(data, *processors, **options): """ 数据处理管道:依次应用多个处理函数 参数: - data: 输入数据 - *processors: 处理函数列表 - **options: 配置选项 """ result = data 应用每个处理函数 for processor in processors: result = processor(result) 如果有输出选项,打印结果 if options.get("verbose", False): print(f"处理结果:{result}") return result 定义几个处理函数 def to_uppercase(text): return text.upper() def remove_spaces(text): return text.replace(" ", "") def add_prefix(text, prefix="PROCESSED_"): return prefix + text 使用数据处理管道 original_text = "hello world python" processed = process_data( original_text, to_uppercase, remove_spaces, lambda x: add_prefix(x, "RESULT_"), verbose=True ) print(f"最终结果:{processed}")总结
Python 函数提供了强大的代码组织和复用能力。从简单的参数传递到高级的装饰器和生成器,掌握这些函数使用技巧可以显著提升代码质量和开发效率。建议在实际项目中多练习这些模式,根据具体需求选择合适的函数设计方式。
编程学习
技术分享
实战经验