-
logging比print更专业,因其实现了Logger、Handler、Formatter三层解耦,支持多级过滤与滚动写入;basicConfig仅在root未配置时生效,模块化项目应显式创建logger及handler;RotatingFileHandler可实现按大小轮转,需设置maxBytes和backupCount;一个logger可绑定多个handler以同时输出到控制台和文件,但需分别设置各级别;日志输出需同时满足logger和handler的level,且默认propagate为True。
-
GitLabCI中应使用多阶段构建隔离依赖与运行时环境,通过Poetry或pip-tools生成确定性依赖文件,用CI内置变量安全认证私有仓库,按committag或shortSHA打镜像标签,并在推送前验证配置合法性。
-
Pandas使用float64[pyarrow]类型时,切片与拼接操作几乎不增加内存占用,其本质是底层启用了Copy-on-Write(写时复制)机制,而非传统深拷贝;而默认float64类型在未显式启用CoW时会触发冗余内存分配。
-
在遵循ConventionalCommits规范的Python库开发中,版本号更新(如pyproject.toml中的version字段变更)推荐使用release类型提交;chore虽然常见且合法,但语义不够精准,长期来看release更符合意图、更易被自动化工具识别。
-
预定义字符类在正则表达式中提升效率与可读性。\d匹配数字,\D匹配非数字,\w匹配单词字符,\W匹配非单词字符,\s匹配空白符,\S匹配非空白符。常见用途包括:1.用\d提取电话号码或价格;2.用\s清理多余空格或换行;3.用^[a-zA-Z_]\w*$校验变量名合法性。注意大小写互斥、语言差异、避免过度依赖及正确转义反斜杠,以确保精准匹配。
-
f-string(格式化字符串字面量)是Python3.6引入的最简洁、高效、可读性最强的字符串格式化方式。它直接在字符串前加f或F,花括号内写表达式,运行时实时求值并转换为字符串。基础用法:变量插值与表达式计算只需在字符串前加f,把变量或任意合法表达式放进{}中即可:name="Alice";age=30;print(f"Hello,{name}.Youare{age}yearsold.")→Hello,Alice.Youare30yearsol
-
asyncio.wait不控制任务执行顺序,仅并发等待可等待对象完成;需顺序执行时应直接await,有依赖的并发任务应封装为内部串行的协程单元。
-
reduce是functools模块中用于序列累积运算的函数,需传入二元函数、非空可迭代对象及可选初始值,如reduce(lambdax,y:x+y,[1,2,3,4])返回10。
-
处理大文件应避免全量加载内存,优先采用流式、分块或延迟加载方式:逐行读取、mmap随机访问、ijson/xml流解析、csv.DictReader+islice跳行、gzip/bz2直接解压、dask/polars替代pandas、sqlite3加速过滤,并用with管理句柄、psutil监控内存、ThreadPoolExecutor重叠IO。
-
加User-Agent仍403是因为网站需Referer和Cookie等组合校验:Referer须匹配合法上级页面,Cookie需时效有效且环境一致,缺一即拦截。
-
直接用pika封装而非Celery,因后者抽象过深、依赖繁重;pika更轻量可控,但需自行实现连接池、重连、消息确认等关键逻辑。
-
只需将fromdistutils.coreimportsetup替换为fromsetuptoolsimportsetup即可兼容大部分项目,但需注意废弃参数、继承类变更、NumPy移除numpy.distutils等问题,并推荐迁移到pyproject.toml。
-
优先使用pipinstall--user安装到用户目录绕过权限问题;必须全局安装时再提权,或用虚拟环境隔离;conda不支持--user,需配置用户包目录或重装到非系统盘。
-
Flask中os.getenv()读不到环境变量主因是环境未生效:.env修改后需重启服务,IDE运行需手动配置环境;生产禁用.env,应系统级设置;密钥须动态注入,推荐config.from_mapping()结合os.getenv(),并严格区分多环境密钥。
-
PythonREPL是自带交互式解释器,支持快速测试、调试与探索;推荐用python3-i或IPython(含语法高亮、补全);Tab补全、help()查文档、_获取上值、%run执行脚本、%history查历史等提升效率。