尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

Python进阶必备:装饰器与日志模块实战解析

Python进阶必备:装饰器与日志模块实战解析
📅 发布时间:2026/7/31 5:14:44

一、权限校验装饰器

1. 装饰器本质

装饰器本质是闭包 + 语法糖(@),在不修改原函数代码的前提下,为其附加新功能。

2. 登录校验案例

from functools import wraps user = None def login_required(func): @wraps(func) # 保留原函数的元信息(__name__、__doc__等) def check_login(): global user if user: func() else: name = input("输入用户名:") pwd = input("输入密码:") if name == "admin" and pwd == "123456": user = name func() else: print("用户名或密码错误") return check_login @login_required def center(): """个人中心页面""" print("欢迎来到个人中心")

3. 关键点

@wraps(func)保证装饰后的函数名、文档字符串不丢失

通过global user在闭包中修改外部变量

支持多个函数共用同一套校验逻辑


二、Logging日志模块

1. 日志级别(由低到高)

级别用途
DEBUG调试信息
INFO常规信息
WARNING警告信息
ERROR错误信息
CRITICAL致命错误

2. 基础配置方式

import logging logging.basicConfig( level=logging.DEBUG, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', handlers=[ logging.StreamHandler(), # 输出到控制台 logging.FileHandler("app.log") # 输出到文件 ] ) logging.info("程序启动成功")

3. 进阶:多处理器 + 自定义格式

import logging # 创建Logger实例 logger = logging.getLogger(__name__) logger.setLevel(logging.DEBUG) # 控制台处理器(INFO级别) sh = logging.StreamHandler() sh.setLevel(logging.INFO) sh.setFormatter(logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')) logger.addHandler(sh) # 文件处理器(WARNING级别) fh = logging.FileHandler('error.log') fh.setLevel(logging.WARNING) fh.setFormatter(logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')) logger.addHandler(fh) logger.debug("调试信息") # 仅文件(因为文件级别为WARNING,所以不会记录) logger.warning("警告信息") # 控制台 + 文件

三、两者结合:带日志的权限装饰器

import logging from functools import wraps logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') user = None def login_required(func): @wraps(func) def wrapper(*args, **kwargs): global user if user: logging.info(f"用户 {user} 访问 {func.__name__}") return func(*args, **kwargs) else: logging.warning("未登录用户尝试访问受保护页面") # ... 登录逻辑 return wrapper

相关新闻

  • 谷歌预热新手机,相机栏发光球体或叫 Pixel Glow,用途成谜!
  • 龍魂·五行计算器 v3.0 | CNSH中文编程
  • 小升初数学思维提升训练:94集视频课程与PDF教材全解析

最新新闻

  • Jackson树模型:JsonNode、ObjectNode与ArrayNode实战指南
  • Python turtle库图形编程:从基础绘制到多边形动画实战
  • Landsat卫星数据全解析:从传感器演进到应用实践指南
  • 从逻辑门到ALU:计算机组成原理中运算器的设计与Verilog实现
  • 2026年7月四川省雅安市联通融合宽带一篇说透怎么选 - 找卡家园
  • Python获取文件大小:四种方法原理、性能对比与最佳实践

日新闻

  • 7步掌握KMS智能激活工具:Windows和Office永久激活完整方案
  • 如何在Windows上运行iOS应用:ipasim跨平台模拟器终极指南
  • 2026年重庆工伤赔偿律师口碑推荐:洪家木律师用专业赢得信赖 - 本地品牌推荐

周新闻

  • 大连理工大学与东京大学联手打造的“主动型AI助手“
  • 170.2026年国家级科研瓶颈:超精密单点金刚石切削(SPDT)光学表面生成
  • SongBloom:革命性歌曲生成框架深度解析——如何通过交织自回归与扩散模型创作完整音乐

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号