前端开发入门到精通的在线学习网站

网站首页 > 资源文章 正文

可以将代码减少一半的 五个Python 装饰器

qiguaw 2025-03-12 19:55:48 资源文章 78 ℃ 0 评论

Python 装饰器是一个强大的工具,用于修改或扩展函数或方法的行为,而无需更改其核心实现。虽然装饰器可能并不总是将代码长度减少一半,但它们可以显着简化和模块化您的代码。这里有五个 Python 装饰器可以帮助实现这一目标:

1. **` @staticmethod ` 装饰器:**
` @staticmethod ` 装饰器用于定义类内的静态方法。静态方法独立于类实例,可以直接在类本身上调用。

class MathUtils:
@staticmethod
def add(a, b):
    return a + b
    results= MathUtils.add(5, 3)

2. **` @classmethod`装饰器:**
` @classmethod`装饰器定义类内的类方法。类方法接收类本身作为第一个参数而不是实例。

class StringUtils:
  @classmethod
   def repeat(cls, string, times):
r      eturn string * times

repeated = StringUtils.repeat(“Hello”, 3)

3. **` @property ` 装饰器:**
` @property ` 装饰器允许您将方法定义为属性,使您能够像属性一样访问它。

class Circle:
   def __init__(self, radius):
      self._radius = radius
  @property
  def area(self):
      return 3.14 * self._radius ** 2
Circle = Circle(5)
print(circle.area) # 作为属性访问,而不是方法
`

4. **` @cached_property ` 装饰器:**
` @cached_property ` 装饰器可在“cached-property”等第三方库中使用,计算一次属性值并将其缓存以供后续访问。

from cached_property import cached_property

class ExpensiveData:
  @cached_property
    def compute(self):
      # Expensive computation
      return result

data = ExpensiveData()
print(data.compute) # Computation happens, result cached
print(data.compute) # Cached result returned without recomputation

5. **` @functools .lru_cache` 装饰器:**
` @functools .lru_cache` 装饰器可在 `functools` 模块中使用,根据参数缓存函数调用。这对于优化计算量大的函数很有用。


from functools import lru_cache
@lru_cache (maxsize=None) # 缓存无限次调用
def fibonacci(n):
if n <= 1:
return n
return fibonacci(n — 1) + fibonacci(n — 2)

这些装饰器可以通过减少冗余代码和改进函数组织来显着增强代码的可读性、模块化和性能。虽然它们可能并不总能实现精确的 50% 减少,但它们有助于编写更干净、更高效的代码。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表