当前位置: 首页 > wzjs >正文

个人网站建设主要功能网站上做404页面怎样做

个人网站建设主要功能,网站上做404页面怎样做,网站建设 好牛,网站建设弹窗怎么设置一、内置装饰器 1. property 作用: 将方法转换为属性访问 适用场景: 属性值校验(如年龄不能为负数)延迟计算属性值兼容旧版属性访问API class BankAccount:def __init__(self):self._balance 0propertydef balance(self):return self._b…

一、内置装饰器

1. @property

作用: 将方法转换为属性访问

适用场景

  • 属性值校验(如年龄不能为负数)
  • 延迟计算属性值
  • 兼容旧版属性访问API

class BankAccount:def __init__(self):self._balance = 0@propertydef balance(self):return self._balance@balance.setterdef balance(self, value):if value < 0:raise ValueError("余额不能为负")self._balance = valueaccount = BankAccount()
account.balance = 100
print(account.balance)  # 100

2. @classmethod

作用: 定义类方法

适用场景

  • 创建工厂方法
  • 实现单例模式
  • 类级别的配置管理

class Logger:_instance = None@classmethoddef instance(cls):if not cls._instance:cls._instance = cls()return cls._instancelog1 = Logger.instance()
log2 = Logger.instance()
print(log1 is log2)  # True

3. @staticmethod

作用: 定义静态方法

适用场景

  • 工具类函数
  • 数学计算辅助方法
  • 与类相关但无需访问状态的函数

class MathUtils:@staticmethoddef clamp(value, min_val, max_val):return max(min(value, max_val), min_val)print(MathUtils.clamp(15, 0, 10))  # 10

二、functools模块

4. @lru_cache

作用: 缓存函数计算结果

适用场景

  • 递归函数优化
  • API调用结果缓存
  • 计算密集型函数优化

from functools import lru_cache@lru_cache(maxsize=128)
def factorial(n):return 1 if n == 0 else n * factorial(n-1)print(factorial(10))  # 3628800

5. @wraps

作用: 保留原函数元信息

适用场景

  • 构建装饰器链
  • 维护函数文档
  • 调试时保留函数签名

from functools import wrapsdef log_args(func):@wraps(func)def wrapper(*args, **kwargs):print(f"参数: {args}")return func(*args, **kwargs)return wrapper@log_args
def add(a, b):"""两数相加"""return a + bprint(add.__name__)  # add

6. @singledispatch

作用: 实现函数重载

适用场景

  • 处理多类型参数
  • 数据序列化
  • 多态函数实现

from functools import singledispatch@singledispatch
def print_type(obj):print("未知类型")@print_type.register(int)
def _(obj):print("整数类型")print_type(42)    # 整数类型
print_type("42")  # 未知类型

7. @total_ordering

作用: 自动生成比较方法

适用场景

  • 简化比较运算符实现
  • 需要排序的类
  • 减少样板代码

from functools import total_ordering@total_ordering
class Version:def __init__(self, major, minor):self.major = majorself.minor = minordef __eq__(self, other):return (self.major, self.minor) == (other.major, other.minor)def __lt__(self, other):return (self.major, self.minor) < (other.major, other.minor)v1 = Version(1, 2)
v2 = Version(2, 0)
print(v1 < v2)  # True

8. @cached_property (Python 3.8+)

作用: 缓存属性计算结果

适用场景

  • 复杂属性计算
  • 数据库连接延迟初始化
  • 线程安全属性缓存

from functools import cached_propertyclass Dataset:def __init__(self, data):self.data = data@cached_propertydef stats(self):print("计算统计数据...")return {'mean': sum(self.data)/len(self.data),'max': max(self.data)}ds = Dataset([1,2,3])
print(ds.stats)  # 计算统计数据...
print(ds.stats)  # 直接返回缓存

三、contextlib模块

9. @contextmanager

作用: 创建上下文管理器

适用场景

  • 资源管理(文件/网络)
  • 计时器实现
  • 临时环境配置

from contextlib import contextmanager@contextmanager
def lock_resource(lock):lock.acquire()try:yieldfinally:lock.release()# 使用示例
lock = threading.Lock()
with lock_resource(lock):# 执行需要加锁的操作pass

四、dataclasses模块

10. @dataclass (Python 3.7+)

作用: 自动生成数据类方法

适用场景

  • 数据容器类
  • 配置对象
  • 简化类定义

from dataclasses import dataclass@dataclass
class Point:x: floaty: floatz: float = 0.0p = Point(1.5, 2.5)
print(p)  # Point(x=1.5, y=2.5, z=0.0)

五、abc模块

11. @abstractmethod

作用: 定义抽象方法

适用场景

  • 定义接口规范
  • 框架基类设计
  • 强制子类实现特定方法

from abc import ABC, abstractmethodclass Renderer(ABC):@abstractmethoddef render(self):passclass HTMLRenderer(Renderer):def render(self):return ""# Renderer()  # 报错
html = HTMLRenderer()
print(html.render())

六、atexit模块

12. @register

作用: 注册退出处理函数

适用场景

  • 资源清理
  • 保存程序状态
  • 服务关闭处理

import atexit@atexit.register
def cleanup():print("执行清理操作...")print("程序运行中...")
# 退出时输出清理信息

七、unittest模块

13. @skip

作用: 跳过测试用例

适用场景

  • 未完成的测试
  • 环境依赖未满足
  • 已知问题临时跳过

import unittestclass TestCases(unittest.TestCase):@unittest.skip("待实现")def test_feature(self):self.fail("未实现")if __name__ == '__main__':unittest.main()

总结表格

装饰器模块适用场景版本要求
@property内置属性访问控制所有版本
@lru_cachefunctools缓存优化3.2+
@contextmanagercontextlib资源管理2.5+
@dataclassdataclasses数据类3.7+
@abstractmethodabc接口规范3.0+
@cached_propertyfunctools属性缓存3.8+
@singledispatchfunctools函数重载3.4+
http://www.dtcms.com/wzjs/538354.html

相关文章:

  • 全球最大的购物网站wordpress怎么生成app
  • 专业的网站建设平台做游戏的php网站有哪些
  • 精品一卡二卡 卡四卡分类seo高清视频教程
  • 网站制作设计哪家公司好电商网页设计公司
  • 企聚网站建设手机网站开发免费视频教程
  • 比较有名的网站建设平台怎样开网站
  • iis建多个网站唐山论坛建站模板
  • 内蒙古建设安全监督网站电商网站营销方案
  • 南京网站seo服务合肥网站开发需要
  • 网站上点击图片局部放大如何做比较网站建设
  • 网站如何seo推广网店推广方式有哪些
  • 阿里云服务器部署网站四川建设网有限责任公司是国企吗
  • 彩票交易网站开发足球比赛直播免费观看
  • ps网站参考线怎么做可以免费发外链的论坛
  • 网站如何减少404跳转企业网站主页素描模板
  • 保定专业网站建设公司网站关键词是什么
  • 做一个网站的计划书wordpress用户邮箱验证失败
  • 公司做公司网站freenom免费域名注册不了
  • 韶关网站建设价格关于写策划的一个网站
  • 做网站百度一下软件开发包括哪些
  • 营销型网站的目标是wordpress建站用模板的弊端
  • 二手交易网站建设方案安庆seo
  • 灵感集网站怎么找客户渠道
  • 增城营销型网站建设用什么软件做网站最好
  • 深圳企业专业网站建设抖音代运营合作
  • 电子图书馆网站建设支持付费下载系统的网站模板或建站软件
  • 网站制作复杂吗深圳罗湖网站设计
  • 用手机做兼职的网站专业建设物流行业网站
  • 高端手机网站 制作公司虎丘网站建设
  • 宾利棋牌在哪个网站做的广告营销型网站怎么建设