只会在终端使用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要搭建数据库集群呢?我想应该有以下几点原因&…...
AI智能体架构设计:从成本黑洞到价值引擎的解耦之道
1. 从成本黑洞到价值引擎:为什么你的AI智能体架构正在吞噬预算又到了季度技术复盘会,财务那边递过来的云账单和工程人力成本,是不是又让你倒吸一口凉气?你看着报表上那个名为“AI智能体平台”的项目,它的资源消耗曲线几…...
Transient、QuickEye、VerifyEye傻傻分不清?一文讲透Ansys里三种眼图仿真方法的适用场景与避坑指南
Transient、QuickEye、VerifyEye深度解析:Ansys眼图仿真技术选型实战指南 在高速数字系统设计中,眼图分析是评估信号完整性的黄金标准。面对Ansys工具链中三种截然不同的眼图生成方法,工程师常常陷入选择困境——是追求精确度的传统瞬态分析&…...
Postgresql基础实践教程(九)
⭐️⭐️⭐️⭐️⭐️ 完整数据详见 练习数据免费 ⭐️⭐️⭐️⭐️⭐️ 七十二、WITH查询(公用表表达式CTE) 1. SELECT 中的 WITH 2. 递归查询 3. 公用表表达式的物化 4. WITH中的数据修改语句 WITH提供了一种在主查询中写辅助语句的方法。这些语…...
巨量投放总结
巨量商务管理平台 : https://business.oceanengine.com 巨量广告投放平台: https://ad.oceanengine.com 商务管理平台 账户 广告组 计划 广告投放平台 层级关系: 广告组 -> 计划 -> 创意 对应FB: 系列 - > 广告组 -> 广告...
LaTeX公式一键转Word:3步告别数学公式编辑烦恼
LaTeX公式一键转Word:3步告别数学公式编辑烦恼 【免费下载链接】LaTeX2Word-Equation Copy LaTeX Equations as Word Equations, a Chrome Extension 项目地址: https://gitcode.com/gh_mirrors/la/LaTeX2Word-Equation 还在为Word文档中的数学公式编辑而抓狂…...
Burp抓包失败的五大隐形墙与HTTPS解密断裂点排查指南
1. 这不是Burp用得不对,是环境链路断在了你没看见的地方“Burp抓不到包”——这句话我过去三年里听开发、测试、刚转安全的新人说了不下两百遍。但真正打开Burp一看,Proxy标签页里空空如也,连个localhost:8080的请求都没有,十有八…...
数字合成器d-FORMANT:从模拟经典到数字复刻的工程实践
1. 项目概述:从模拟经典到数字复刻如果你对合成器稍有了解,或者对电子音乐制作背后的硬件感兴趣,那么“FORMANT”这个名字你一定不陌生。它最初是上世纪70年代由《Elektor》杂志发布的一款模拟单音合成器,以其清晰的模块化设计和出…...
3步高效解决TranslucentTB任务栏透明化难题:完整配置指南
3步高效解决TranslucentTB任务栏透明化难题:完整配置指南 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB 你是否厌倦了Window…...
具身智能的发展对人类社会的影响有哪些?
具身智能对人类社会影响一、经济产业层面产业重构:催生机器人、智能制造、自动驾驶新产业,重塑生产链条效率跃升:替代重复繁重劳作,工厂、农业、物流产能大幅提升就业结构变化:低端体力岗位缩减,运维、研发…...
Lovable后端集成方案深度拆解(含Spring Boot 3.2+GraalVM+OpenTelemetry完整Demo)
更多请点击: https://kaifayun.com 第一章:Lovable后端集成方案全景概览 Lovable 是一个面向现代 Web 应用的轻量级后端协作框架,其核心设计理念是“可组合、可观测、可演进”。它不绑定特定语言或运行时,而是通过标准化协议与契…...
