只会在终端使用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/134626850
  • cumtime:在函数中累计花费的时间,包括在被调用函数中花费的时间
  • 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

以上就是本期的全部内容,期待点赞在看,我是啥都生,下次再见

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/228297.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【代码】基于卷积神经网络(CNN)-支持向量机(SVM)的分类预测算法

程序名称&#xff1a;基于卷积神经网络&#xff08;CNN&#xff09;-支持向量机&#xff08;SVM&#xff09;的分类预测算法 实现平台&#xff1a;matlab 代码简介&#xff1a;CNN-SVM是一种常用的图像分类方法&#xff0c;结合了卷积神经网络&#xff08;CNN&#xff09;和支…

绝地求生:成长型皮肤异色定价是否有些夸张?

大家好&#xff0c;我闲游盒小盒子&#xff01; 自从26.2更新上架回归的黑市中四款成长型皮肤以后&#xff0c;能看到社区里很多玩家都分享抽中了自己心仪的成长型皮肤。 但是对于异色很少有人去实装&#xff0c;大多数玩家都是选择去分解异色换取五张图纸然后追求升级原皮等级…

【古月居《ros入门21讲》学习笔记】15_ROS中的坐标系管理系统

目录 说明&#xff1a; 1. 机器人中的坐标变换 tf功能包能干什么&#xff1f; tf坐标变换如何实现 2. 小海龟跟随实验 安装 ros-melodic-turtle-tf 实验命令 运行效果 说明&#xff1a; 1. 本系列学习笔记基于B站&#xff1a;古月居《ROS入门21讲》课程&#xff0c;且使…

怎么更新BI报表数据?问我就对了

BI大数据分析工具上有大量的BI报表模板&#xff0c;这些模板都是一个个完整的BI报表&#xff0c;只需将数据源更换&#xff0c;立即就能用来分析我们自己的数据。那&#xff0c;BI报表的数据怎么更新&#xff1f;接下来就来说说这事。 目的&#xff1a;更新BI报表数据 工具&a…

Flask教程入门

1.学习Flask之前&#xff0c;首先需要对URL进行一定的了解。 URL的一些知识&#xff1a; 1.URL只能包含ASCII码里面一些可显示的字符&#xff0c;如A-Z&#xff0c;a-z&#xff0c;0-9&#xff0c;&&#xff0c;#&#xff0c;%&#xff0c;&#xff1f;&#xff0c;/等字符…

vue项目中使用jsonp跨域请求百度联想接口

一. 内容简介 vue项目中使用jsonp跨域请求百度联想接口 二. 软件环境 2.1 Visual Studio Code 1.75.0 2.2 chrome浏览器 2.3 node v18.14.0 三.主要流程 3.1 代码 核心代码 // 这个是请求函数doLeno() {// 挂载回调函数&#xff0c;不挂载&#xff0c;会报不存在window…

Slf4j使用Logback时,Logback如何初始化

前言 Slf4j SLF4J&#xff0c;全称 Simple Logging Facade for Java&#xff0c;是一个用于Java编程语言的日志系统抽象层。它为多种现有日志框架&#xff08;例如Log4j、java.util.logging等&#xff09;提供了统一的接口, 但自身并不实现日志功能。 SLF4J 允许用户在部署时…

神经网络核心组件和流程梳理

文章目录 神经网络核心组件和流程梳理组件流程 神经网络核心组件和流程梳理 组件 层&#xff1a;神经网络的基本结构&#xff0c;将输入张量转换为输出张量。模型&#xff1a;由层构成的网络。损失函数&#xff1a;参数学习的目标函数&#xff0c;通过最小化损失函数来学习各…

大坝安全监测的内容及作用

大坝安全监测是指对大坝水雨情沉降、倾斜、渗压以及大坝形状特征有效地进行监测&#xff0c;及时发现潜在的安全隐患和异常情况&#xff0c;以便大坝管理人员能够做出科学决策&#xff0c;以确保大坝安全稳定运行。 大坝安全监测的主要内容 1.表面位移监测&#xff1a;监测大坝…

【vue】v-model在表单元素上的应用

表单元素&#xff1a; https://blog.csdn.net/m0_67930426/article/details/134655644 使用模板 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> </head><body>&l…

C++: String类接口学习

文章目录 STL简介一. 为什么要有string类二. STL 中的 string 类介绍1. string 类描述2. 关于 basic_string 三. string 类的常用接口1. string 类的常见构造2. string 类的容量操作size 和 lengthcapacitymax_sizereserveresize 3. string 类对象的访问及遍历操作operator[] 和…

快速筛出EXCEL行中的重复项

比如A列是一些恶意IP需要导入防火墙&#xff0c;但包括一些重复项&#xff0c;为不产生错误&#xff0c;需要把重复项筛出来&#xff1a; 1、给A列排序&#xff0c;让重复项的内容排在相邻的行 2、在B列中写一个条件函数&#xff1a;IF(A1A2,1,0)&#xff0c;然后下拉至行尾完成…