新闻中心

Python函数进阶详解,掌握装饰器、闭包与高阶函数

栏目:软件教程 日期: 作者:admin 阅读:7

本文面向Python开发者,系统讲解Python函数进阶技巧。内容涵盖函数参数高级用法、闭包、装饰器、高阶函数、匿名函数(lambda)、递归函数及实战应用。通过实例讲解和分步操作,帮助读者快速掌握函数进阶技能,提高代码复用性和可维护性。

正文教程

一、函数参数高级用法

  1. 默认参数

def greet(name="Guest"):
   print(f"Hello, {name}!")
greet()       # 输出 Hello, Guest!
greet("Tom")  # 输出 Hello, Tom!

  1. 可变参数*args**kwargs

def demo(*args, **kwargs):
   print("args:", args)
   print("kwargs:", kwargs)

demo(1, 2, 3, a=4, b=5)

  • 技巧:适合接收不确定数量的参数


二、匿名函数(Lambda)

add = lambda x, y: x + y
print(add(3,5))  # 输出 8

  • 技巧:用于函数式编程或作为参数传递


三、高阶函数

  1. map

nums = [1,2,3,4]
squared = list(map(lambda x: x**2, nums))
print(squared)

  1. filter

even_nums = list(filter(lambda x: x%2==0, nums))
print(even_nums)

  1. reduce(需要导入functools

from functools import reduce
product = reduce(lambda x, y: x*y, nums)
print(product)

  • 技巧:高阶函数可实现函数式编程


四、闭包(Closure)

def outer(x):
   def inner(y):
       return x + y
   return inner

add_five = outer(5)
print(add_five(10))  # 输出 15

  • 技巧:闭包可保存外部函数变量,实现数据封装


五、装饰器(Decorator)

def decorator(func):
   def wrapper(*args, **kwargs):
       print("函数开始执行")
       result = func(*args, **kwargs)
       print("函数执行结束")
       return result
   return wrapper

@decorator
def say_hello(name):
   print(f"Hello, {name}!")

say_hello("Tom")

  • 技巧:装饰器可增强函数功能,无需修改原函数


六、递归函数

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

print(factorial(5))  # 输出 120

  • 技巧:递归适合处理分治、树结构或阶乘等问题


七、实用技巧总结

  1. 熟练使用*args**kwargs提高函数灵活性

  2. 结合Lambda与高阶函数简化列表、字典操作

  3. 使用闭包保存状态,避免全局变量

  4. 装饰器增强函数功能,实现统一日志、权限验证

  5. 递归与迭代结合,处理复杂算法问题

相关资讯