只会在终端使用Python运行代码?这些高级用法了解了解
大部分同学在终端使用Python可能只是简单的执行代码,但其实结合一些Python内置模块或第三方库可以实现更高级且便捷的用法,一起看看吧
插播,更多文字总结·指南·实用工具·科技前沿动态第一时间更新在公粽号【啥都会一点的研究生】
代码Benchmark测试
首先简单写个斐波那契数列,命名为example.py
import timedef fib(n):if n <= 1:return nreturn fib(n - 1) + fib(n - 2)def main(test_times=50):start = time.perf_counter()for _ in range(test_times):fib(30)print(f'Time spent: {time.perf_counter() - start} s')if __name__ == '__main__':main()
现在对这份代码进行Benchmark测试,Python中的内置模块cProfile可以帮助我们完成这个工作,在终端执行以下命令
python -m cProfile example.py
可以得到一份深入的测试报告,如图所示

其中表头从左至右
ncalls:函数被调用的次数tottime:函数花费的总时间(不包括被调用函数花费的时间)percall:每次调用所花费的时间(等于tottime除以ncalls)即15.358/134626850cumtime:在函数中累计花费的时间,包括在被调用函数中花费的时间percall:每次调用所花费的时间(等于cumtime除以ncalls)15.358/50
是不是肥肠简单且清晰明了,对我们优化代码提供帮助
值得一提的是,如果只想测试一些简单的Python代码,内置的timeit是个不错的选择,如
python -m timeit '[i for i in range(100)]'
使用 timeit 测量执行此列表推导式所需的时间,得到输出
200000 loops, best of 5: 1.4 usec per loop
此输出表明每次计时将执行200000次列表推导,共计时测试了5次,最好的结果是1.4毫秒
代码风格检查
如何评估我们的Python代码是否Pythonic呢?第三方库flake8可以轻松做到,首先安装
pip install flake8
确保安装完成后,我们还是使用前述斐波那契example.py,只需在终端输入
python -m flake8 example.py
输出

可以按照提示进行优化
格式化Python代码
当知道我们写的史山代码需要风格改进,由前述可以结合flake8进行手动优化
那有没有什么能帮我们自动优化呢?第三方库black诞生
同样使用pip安装
pip install black
安装完毕后通过一行命令使用black格式化我们的代码
python -m black example.py
输出

然后再次使用flake8检查代码风格,无任何输出,代表无优化项
此时我们的代码变成了
import timedef fib(n):if n <= 1:return nreturn fib(n - 1) + fib(n - 2)def main(test_times=50):start = time.perf_counter()for _ in range(test_times):fib(30)print(f"Time spent: {time.perf_counter() - start} s")if __name__ == "__main__":main()
使用Pylint进行更专业的代码分析
仅拥有良好的风格还不完美,为了进行样式之外的代码分析,还需要结合pylint
pip install pylint
此处基于black优化过的代码进行pylint分析,在终端输入一行命令
python -m pylint example.py
输出如下,可知该代码缺少文档字符串

所以在大佬review代码前,可以借助pylint先进行一波优化
对代码进行安全性分析
Python第三方库bandit可以帮助我们检查代码中潜在的安全隐患、不安全的函数或模块、密码或密钥等问题
pip install bandit
在终端执行如下命令进行安全检查
python -m bandit example.py
输出

表明肥肠安全
解析json并清晰打印
除了在vscode中打开json,并格式化显示达到清晰展示的目的外
Python自带的模块也能完成这个,比如有example.json文件内容如下
[{"name": {"first_name":"Xukong", "last_name":"Cai"}, "hobby":"rap, basketball"},{"name": {"first_name":"San", "last_name":"Zhang"}, "hobby":"eat"}
]
使用如下命令在终端格式化显示
python -m json.tool example.json
输出

肥肠清晰,插一句,若同样想在终端打印代码中输出的json结构,可以使用pprint
以上就是本期的全部内容,期待点赞在看,我是啥都生,下次再见
相关文章:
只会在终端使用Python运行代码?这些高级用法了解了解
大部分同学在终端使用Python可能只是简单的执行代码,但其实结合一些Python内置模块或第三方库可以实现更高级且便捷的用法,一起看看吧 插播,更多文字总结指南实用工具科技前沿动态第一时间更新在公粽号【啥都会一点的研究生】 代码Benchmar…...
图论 2023.11.27
Kruskal定义不同的优先级 P3623 [APIO2008] 免费道路 给定一个无向图,其中一些边是0,其他边为1 两个不同的点之间都应该一条且仅由一条边连接 并保持刚好K条0,求是否有解决方案 n<2e4,m<1e5 Kruskal定义不同的优先级 思路:…...
蓝桥杯day02——Fizz Buzz
1、题目 给你一个整数 n ,找出从 1 到 n 各个整数的 Fizz Buzz 表示,并用字符串数组 answer(下标从 1 开始)返回结果,其中: answer[i] "FizzBuzz" 如果 i 同时是 3 和 5 的倍数。answer[i] &…...
socket 一个完整的不错的示例
从客户端向服务器端发送信息时,在服务器端有打印显示; 检测环境常用,备份一下 0,公共头文件代码 //config.h#include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/socket.h> #inc…...
第10关:基数排序
任务要求参考答案问答98 任务描述相关知识 基数排序算法编程要求测试说明 任务描述 本关任务:实现基数排序算法,并将乱序数列变成升序。 相关知识 为了完成本关任务,你需要掌握:1.基数排序算法。 基数排序算法 基数排序是按…...
torch::和at:: factory function的差別
torch::和at:: factory function的差別 前言torch::autograd::THPVariable_randtorch::rand_symintat::rand_symintdemotorch命名空間at命名空間 前言 >>> import torch >>> a torch.rand(3, 4) >>> a.requires_grad False >>> a torch…...
与珎同行录-开篇-231129
与珎同行录-开篇 珎就是对陪伴并帮助我写代码的AI的昵称 能不能读懂这个绕口令问题呢? 连续的椎体的相邻椎体质心的相邻质心的质心作为当前质心所在的椎体的质心, 该质心的方向代表该椎体的上下方向 如何代码实现呢? 还是没看懂…好吧最终的算法是:...
linux logrotate日志轮询设置案例一
1.编辑/etc/logrotate.conf文件,添加如下配置,并保存 /var/log/ztj.log {missingokhourlycreate 644 root rootsharedscriptspostrotateif [ -f /var/run/syslogd.pid ];then/bin/kill -HUP $(/bin/cat /var/run/syslogd.pid) >/dev/null 2>&…...
Android 12.0 禁用adb reboot recovery命令实现正常重启功能
1.前言 在12.0的系统rom定制化开发中,在定制recovery模块的时候,由于产品开发需要要求禁用recovery的相关功能,比如在通过adb命令的 adb reboot recovery的方式进入recovery也需要实现禁用,所以就需要了解相关进入recovery流程来禁用该功能 2.禁用adb reboot recovery命令…...
使用Jmeter进行http接口测试
前言: 本文主要针对http接口进行测试,使用Jmeter工具实现。 Jmter工具设计之初是用于做性能测试的,它在实现对各种接口的调用方面已经做的比较成熟,因此,本次直接使用Jmeter工具来完成对Http接口的测试。 一、开发接口…...
Linux内存管理(六十三):ION 内存管理器——cma heap
源码基于:Linux 5.4 约定: 芯片架构:ARM64内存架构:UMACONFIG_ARM64_VA_BITS:39CONFIG_ARM64_PAGE_SHIFT:12CONFIG_PGTABLE_LEVELS :3ION 系列博文: ION 总篇ION —— cma heapION —— system heap0. 前言 ION 是 Google 在 Android 4.0 中引入,目的主要是通过在硬件…...
条形码格式
条形码格式 简述EAN码EAN-13EAN-8 UPC码UPC-AUPC-E CODE128 简述 EAN码 EAN码(European Article Number)是国际物品编码协会制定的一种全球通用的商用条码。EAN码分为:标准版(EAN-13) 和 缩短版(EAN-8&am…...
Java通过Redis进行延时队列,定时发布消息(根据用户选择时间进行发布)
前言 目前很多产品都用到过定时发布或者定时推送等功能,定时推送有两种定义,一种是后台自己有相关规则,通过定时器设置好相应的时间进行推送(例如定时任务框架QuartZ、xxl-job等实现,或者通过springboot自带定时任务Scheduled注解等实现)&am…...
从 0 搭建 Vite 3 + Vue 3 Js版 前端工程化项目
之前分享过一篇vue3+ts+vite构建工程化项目的文章,针对小的开发团队追求开发速度,不想使用ts想继续使用js,所以就记录一下从0搭建一个vite+vue3+js的前端项目,做记录分享。 技术栈 Vite 3 - 构建工具 Vue 3 Vue Router - 官方路由管理器 Pinia - Vue Store你也可以选择vue…...
【论文阅读笔记】Smil: Multimodal learning with severely missing modality
Ma M, Ren J, Zhao L, et al. Smil: Multimodal learning with severely missing modality[C]//Proceedings of the AAAI Conference on Artificial Intelligence. 2021, 35(3): 2302-2310.[开源] 本文的核心思想是探讨和解决多模态学习中的一个重要问题:在训练和测…...
在Windows系统上安装git-Git的过程记录
01-上git的官网下载git的windows安装版本 下载页面链接: https://git-scm.com/downloads 选择Standalone Installer的版本进行下载: 这里给大家一全git-2.43.0的百度网盘下载链接: https://pan.baidu.com/s/11HwNTCZmtSWj0VG2x60HIA?pwdut…...
qt QString常用方法
1. QString 尾部拼接,尾部插入字符.调用append()函数.同时,QString字符串直接用加号 也可以进行拼接. QString s "我的女神";s s "刘亦菲";s "最近可好?";s.append("你跑哪儿去了?");//拼接结果: 我的女神刘亦菲最近可好?你跑…...
吴恩达《机器学习》10-6-10-7:学习曲线、决定下一步做什么
一、学习曲线 1. 学习曲线概述 学习曲线将训练集误差和交叉验证集误差作为训练集实例数量(m)的函数绘制而成。这意味着从较少的数据开始,逐渐增加训练集的实例数量。该方法的核心思想在于,当训练较少数据时,模型可能…...
分子骨架跃迁工具-DiffHopp 评测
一、文章背景介绍 DiffHopp模型发表在ICML 2023 Workshop on Computational Biology(简称:2023 ICML-WCB)上的文章。第一作者是剑桥计算机系的Jos Torge。 DiffHopp是一个专门针对骨架跃迁任务而训练的E3等变条件扩散模型。此外,…...
MySQL双主双从数据库集群搭建
1 引言 在之前的文章中提到过相关搭建方法,具体请参考《MySQL主从数据库搭建》这篇文章,本文主要讲述双主双从,双主多从集群的搭建方式。 这里要问一个问题,为什么MySQL要搭建数据库集群呢?我想应该有以下几点原因&…...
Qwen3-14B-Int4-AWQ效果深度评测:代码生成、推理与数学能力横向对比
Qwen3-14B-Int4-AWQ效果深度评测:代码生成、推理与数学能力横向对比 1. 评测背景与模型特点 Qwen3-14B-Int4-AWQ作为通义千问系列的最新量化版本,在保持原版14B参数规模的同时,通过AWQ(Activation-aware Weight Quantization&am…...
保姆级教程:在Linux上用Neo4j 3.5.35社区版搭建你的第一个图数据库(附配置文件修改详解)
从零开始:Linux环境下Neo4j 3.5.35社区版实战部署指南 第一次接触图数据库时,那种既兴奋又忐忑的心情我至今记忆犹新。作为非关系型数据库中的重要分支,图数据库以其独特的节点-关系模型,在处理复杂关联数据时展现出惊人的效率。而…...
别再用裸奔的mysqldump了!MySQL 5.7+安全备份的三种进阶姿势
MySQL 5.7数据安全备份的三大实战方案 当数据库规模突破GB级时,传统备份方式暴露的安全短板日益明显——某电商平台曾因备份文件泄露导致数百万用户数据在黑市流通。这并非孤例,Verizon《2023年数据泄露调查报告》显示,43%的数据库泄露事件与…...
python类库(一)模板
一、PromptTemplate方法from_templatePromptTemplate 的 from_template 方法就是将一个原始的模板字符串转化为一个更丰富、更方便操作的 PromptTemplate 对象,这个对象就是 LangChain 中的提示模板。示例# 导入LangChain中的提示模板 from langchain_core.prompts …...
2026年硕士论文AI率15%以下怎么保证?实测工具推荐附操作指南
硕士论文AI率15%以下,这条线现在是很多学校的硬要求。比本科的30%严多了,但处理起来也有方法。 写这篇的起因是帮导师组里的一个师弟处理论文AI率问题。他的论文8万多字,知网AIGC检测给出AI率22%,需要降到15%以下才能送盲审。用嘎…...
CentOS 7.4编译FFmpeg遇阻:从nasm/yasm报错到完整安装的实战指南
1. 当FFmpeg编译遇上拦路虎:nasm/yasm报错解析 第一次在CentOS 7.4上编译FFmpeg时,看到屏幕上跳出"nasm/yasm not found or too old"的红色警告,我整个人都懵了。这不是个简单的依赖缺失问题,而是一个典型的"你以为…...
mysql执行预处理语句流程是怎样的_SQL执行优化解析
预处理语句生命周期为PREPARE→EXECUTE→DEALLOCATE三阶段,执行计划在EXECUTE时生成且不跨连接复用;参数类型影响索引选择与优化效果;仅支持值占位,不支持动态表名/列名;PHP PDO默认模拟预处理会失效原生优化。预处理语…...
开源中国构建AI教育新基建:全学段布局推动教育数字化转型
在北京展览馆举行的第35届北京教育装备展示会上,开源中国作为支持单位,正式宣布其教育业务战略全面升级。这家国内领先的开发者社区与开源技术服务平台,正从传统的工具与社区服务角色,向覆盖K12至高等教育全学段的AI基础设施与人才…...
SpringAI 1.0.0 实战:用阿里百炼平台免费额度,5分钟搞定你的第一个AI对话接口
SpringAI 1.0.0实战:零成本搭建AI对话接口的完整指南 最近在技术社区里看到不少开发者对AI应用开发跃跃欲试,但往往被高昂的API调用成本劝退。作为一个经历过同样困扰的开发者,我发现阿里百炼平台提供的免费额度简直是成本敏感型开发者的福音…...
Dial2硬件传感器适配库:嵌入式固件的契约实现层
1. 项目概述 Dial2HardwareSensors 是一个面向 AhmsVille Dial 2 硬件平台的专用传感器适配层实现库。该库不提供抽象接口定义,而是聚焦于在真实嵌入式硬件上完成传感器驱动的最终落地——即把 AhmsVille Dial2 sensor adapter interfaces (通常为纯虚…...
