做翻译赚钱的网站好,网站制作金华公司电话,手机端网站变成wap,站群 网站如何做大部分同学在终端使用Python可能只是简单的执行代码#xff0c;但其实结合一些Python内置模块或第三方库可以实现更高级且便捷的用法#xff0c;一起看看吧
插播#xff0c;更多文字总结指南实用工具科技前沿动态第一时间更新在公粽号【啥都会一点的研究生】
代码Benchmar…大部分同学在终端使用Python可能只是简单的执行代码但其实结合一些Python内置模块或第三方库可以实现更高级且便捷的用法一起看看吧
插播更多文字总结·指南·实用工具·科技前沿动态第一时间更新在公粽号【啥都会一点的研究生】
代码Benchmark测试
首先简单写个斐波那契数列命名为example.py
import timedef fib(n):if n 1:return nreturn fib(n - 1) fib(n - 2)def main(test_times50):start time.perf_counter()for _ in range(test_times):fib(30)print(fTime 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除以ncalls15.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_times50):start time.perf_counter()for _ in range(test_times):fib(30)print(fTime 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
以上就是本期的全部内容期待点赞在看我是啥都生下次再见