dataclass 作为标准库中的一个模块,从 Python 3.7 开始引入。随着 Python 版本的不断更新,dataclass 逐渐发展和完善,为开发者提供了一种更便捷的方式来创建和管理数据类。 dataclass 非常适合创建主要用于存储数据的类,可以显著减少样板代码,同时保持代码清晰可读。 from dataclasses import dataclass, field, astuple, asdict from typing import List @dataclass( # frozen=True, # 冻结数据类,防止被修改(只读) # order=True, # 按照定义顺序排序 ) class Person: name
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>高效批量图片压缩工具V2.0</title> <style> :root { --primary-color: #3498db; --error-color: #e74c3c; } body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
这个装饰器确保被装饰的函数在同一时间只能执行一次,其他调用会被立即拒绝(可自定义拒绝回调和返回值),支持同步/异步函数且线程安全。 应用场景 按钮点击限制(GUI应用) API端点限流 表单提交限制,防止重复提交 核心功能 严格单次调用限制:确保函数在执行完成前只能被调用一次,后续调用会被立即拒绝 线程安全:使用 threading.Lock() 保证多线程环境下的安全性 同步/异步兼容:自动识别被装饰函数是同步还是异步,无需手动指定 回调机制: 成功回调 (on_success):函数执行成功后触发 拒绝
import os import asyncio import time from typing import List, Callable, Optional, Dict import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.mime.image import MIMEImage from email.mime.application import MIMEApplication from jinja2 import Environment, FileSystemLoader class EmailSender: de
argparse 是 Python 标准库中用于解析命令行参数的模块,它取代了早期的 optparse 模块,提供了更强大、更灵活的命令行参数处理功能。 基本用法 import argparse # 1. 创建解析器对象 parser = argparse.ArgumentParser(description='程序描述') # 2. 添加参数 parser.add_argument('integers', metavar='N', type=int, nargs='+', help='an integer for the accumulator') parser.add_argument('--sum', dest='acc
import sys import os from typing import Any, Optional, Callable import asyncio import functools import inspect import pickle import hashlib import redis import redis.asyncio as aioredis class RedisCacheManager: """ 同时支持同步与异步函数缓存的 Redis 缓存管理器。 缓存键统一使用 MD5 哈希格式化,避免键过长。 """ _instance = None def __new__(cls, *args, **
一个基于 aiomysql 的异步 MySQL 客户端封装,提供: 异步连接池管理,支持 async with 上下文管理 基础操作接口: execute(sql, params) — 执行写操作,返回影响行数 fetch_one(sql, params) — 查询单条结果 fetch_all(sql
class printcolor: # 打印函数,用于输出 错误信息(红色) @staticmethod def error(font, /, *args, **kwargs): return print("\033[31m" + font + "\033[0m", *args, **kwargs) # 打印函数,用于输出 成功信息(绿色) @staticmethod def success(font, /, *args, **kwargs): return print("\033[32m" + font + "\033[0m", *args, **kwargs) # 打印函数,用于输出 警告信息(黄色)
下面是普通图文验证码接口示例: import base64 import time import requests class Captcha: @staticmethod def normal_image_ucba(img): proxy_ip = get_proxy_ip() base64_str = file_to_base64(img) data = { "clientKey": cfg.CAPTCHA_API_KEY, "task": { "type": "ImageToTextTask",
如下: 导入当前文件夹下所有脚本,脚本的name属性作为键,对象作为值返回 # auto_script/__init__.py import importlib import inspect import os from typing import Type, Dict def import_all_script() -> Dict[str, Type]: """ 导入当前目录下的py pyc文件所有类 键是“类的name属性”,值是对应的类对象。 """ current_dir = os.path.dirname(os.path.abspath(__file__)) classes