functools 模块是 Python 标准库中一个用于高阶函数的工具模块。
所谓高阶函数,就是指那些操作或返回其他函数的函数。
functools 提供了一系列强大的工具,用于装饰器、缓存、比较、偏函数等功能,能帮助你编写更简洁、高效和可复用的代码。
1. @functools.lru_cache - 缓存装饰器
当使用相同的参数再次调用该函数时,它会直接返回缓存的结果,而无需重新计算。
应用场景:适用于计算昂贵
asyncio.TaskGroup 是 Python 3.11 引入的一个上下文管理器,提供了一种现代的方式来管理相关任务的组。
它是 asyncio.gather() 的更直观、更安全的替代方案。
主要特性
自动取消:如果组中任何任务失败,所有其他任务会自动取消
清晰的错误处理:异常会被正确传播
上下文管理器接口:为分组任务提供了自然的范围界定
用来搜索日志文件
import asyncio
import os
import re
from datetime import datetime
from typing import List, Optional
import aiofiles
async def search_logs(log_file: str,
keywords: Optional[List[str]] = None,
level: Optional[str] = None,
count: int = 10,
start_time
页面明亮版
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>网址扫描器</title>
<style>
body {
font-family: 'Microsoft YaHei', sans-serif;
max-width: 800px;
// ==UserScript==
// @name Cookie管理工具
// @namespace http://tampermonkey.net/
// @version 2.0
// @description 清理、导出和导入当前网站的Cookie、localStorage和sessionStorage
// @author yxn
// @match *://*/*
// @grant GM_download
// @grant GM_xmlhttpRequest
// @grant GM_setValue
// @grant GM_getValue
// @grant
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