python项目入门新手攻略

最近工作需要接手了代码量比较大的python开发的项目,平时写python不多,记录一下如何熟悉项目。

分析调用流程-pycallgraph

因为代码量比较大,所以希望通过工具生成代码调用流程,因此用到了pycallgraph。

pycallgraph(Python Call Graph)是一个专业的代码调用流程可视化工具,地址在这里。

安装步骤

环境Ubuntu2004,指令如下:

sudo apt install python3-pycallgraph

使用方式

pycallgraph有两种使用方式,一是命令行,二是代码调用

# 命令行调用
pycallgraph graphviz -- 测试的脚本

执行完成后当前目录下会出现一张图片,显示所有涉及到的调用流程,包括python内部的实现

生成的流程图如下:

简单的程序可以直接用命令行实现,不过复杂的程序这样看起来太乱了,推荐使用代码过滤。

from pycallgraph import PyCallGraph
from pycallgraph import Config
from pycallgraph import GlobbingFilter
from pycallgraph.output import GraphvizOutput
# 以上是需要引入的
from banana import Banana

# 设置过滤器
config = Config()
# exclude是不包含,include是包含
config.trace_filter = GlobbingFilter(exclude=[
    'pycallgraph.*',
    '*.secret_function',
])

# 设置输出文件的名称
graphviz = GraphvizOutput(output_file='filter_exclude.png')

# 运行的代码加在这一行后面
with PyCallGraph(output=graphviz, config=config):
    banana = Banana()
    banana.eat()

这样可以选择性的呈现流程,选择之后的效果图(不是上面这份代码的图)如下:

这样清晰多了。

生成uml图

安装步骤

sudo apt install pylint

使用方式

pyreverse -ASmy -o png  测试的脚本或者目录

运行完成之后当前目录会出现uml图,可以查看类以及提供的接口。

参考链接

python的UML类图自动生成工具--pyreverse安装和使用-CSDN博客

使用pycallgraph和graphviz查看函数调用图-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

翻译: 什么是ChatGPT 通过图形化的方式来理解 Transformer 架构 深度学习三

合集 ChatGPT 通过图形化的方式来理解 Transformer 架构 翻译: 什么是ChatGPT 通过图形化的方式来理解 Transformer 架构 深度学习一翻译: 什么是ChatGPT 通过图形化的方式来理解 Transformer 架构 深度学习二翻译: 什么是ChatGPT 通过图形化的方式来理解 Transformer 架构 深…

56.基于SSM实现的在线教育网站系统(项目 + 论文)

项目介绍 本站是一个B/S模式系统,采用Java的SSM框架作为开发技术,MYSQL数据库设计开发,充分保证系统的稳定性。系统具有界面清晰、操作简单,功能齐全的特点,使得基于SSM的在线教育网站的设计与实现管理工作系统化、规范…

Scikit-Learn回归树

Scikit-Learn回归树 1、决策树1.1、什么是决策树1.2、决策树学习的步骤1.3、决策树算法 1、决策树 决策树(DTs)是一种用于回归和分类的有监督学习方法。通常,决策树用于分类问题;当决策树用于回归问题时,称为回归树。回…

Midjourney之绘画背景的选择

hello 小伙伴们,我是你们的老朋友——树下,今天分享Midjourney提示词中绘画背景的选择,话不多说,直接开始~ 对于背景的选择,Midjourney中主要体现在年代和所处的环境对绘画产生不同的影响 科技的发展,我们…

matlab学习006-使用matlab绘出系统的冲激响应和阶跃响应波形并求其冲激响应的数值解

目录 题目 1,绘出系统的冲激响应和阶跃响应波形 1)基础 2)效果 3)代码 2,求出t0.5s,1s,1.5s,2s时系统冲激响应的数值解。 1)基础 2)效果 ​☀ 3)代码 题目 已知描述某连续系…

【Python】Anaconda 使用笔记

文章目录 一、创建环境1.1 在任意磁盘中创建环境1.2 添加环境路径envs_dirs 二、安装和使用Python环境三、删除已有的Python环境 前言   笔者使用Python的目的主要是为了学习神经网络等深度学习算法。但是在学习之初配置环境的时候发现之前的环境配置一团乱麻,不仅…

Mybatis进阶(动态SQL)

文章目录 1.动态SQL1.基本介绍1.为什么需要动态SQL2.基本说明3.动态SQL常用标签 2.环境搭建1.新建子模块2.删除不必要的两个文件夹3.创建基本结构4.父模块的pom.xml5.jdbc.properties6.mybatis-config.xml7.MyBatisUtils.java8.MonsterMapper.java9.MonsterMapper.xml10.测试Mo…

第七篇:专家级指南:Python异常处理的艺术与策略

专家级指南:Python异常处理的艺术与策略 1 引言 在编程的世界中,异常处理是一门必修的艺术。它不仅涉及到程序的错误处理,更广泛地影响着软件的稳定性、健壮性和用户体验。本篇文章将深入探讨Python中的异常处理,展示如何通过精心…

Linux:服务器间同步文件的脚本(实用)

一、功能描述 比如有三台服务器,hadoop102、hadoop103、hadoop104,且都有atguigu账号 循环复制文件到所有节点的相同目录下,且脚本可以在任何路径下使用 二、脚本实现 1、查看环境变量 echo $PATH2、进入/home/atguigu/bin目录 在该目录下…

三. Django项目之电商购物商城 -- 校验用户名 , 数据入库

Django项目之电商购物商城 – 校验用户名 , 数据入库 需要开发文档和前端资料的可私聊 一. 路由匹配获得用户名 在注册时 , 用户输入用户名 , 通过ajax请求发送到服务器 , 在路由中设置对应url , 响应视图 , 将用户输入的用户名传入视图 , 与数据库进行校验检查用户名是否重…

信息技术内涵及意义

一、信息技术及其演进趋势 (一)信息技术概况概念 信息技术(Information Technology,IT)指“应用在信息加工和处理中的科学、技术与工程的训练方法与管理技巧;上述方法和技巧的应用;计算机及其…

linux高性能服务器--Ngix内存池简单实现

文章目录 内存模型:流程图内存对齐code 内存模型: 流程图 内存对齐 对齐计算 要分配一个以指定大小对齐的内存,可以使用如下公式: 假设要分配大小为n,对齐方式为x,那么 size(n(x-1)) & (~(x-1))。 举个…

【大模型系列】大模型的上下文长度解释与拓展

文章目录 1 什么是大模型的上下文长度?2 拓展大模型上下文长度的方式参考资料 1 什么是大模型的上下文长度? 大模型的上下文长度(Context Length)是指在自然语言处理(NLP)的大型语言模型(Large…

自动的异地组网工具?

越来越多的企业和个人对远程访问和异地组网需求日益增加。为了满足这一需求,各种技术和服务也不断涌现。其中一项备受关注的技术就是自动的异地组网。本文将介绍这一技术的优势和特点。 【天联】组网的优势 天联组网技术以其卓越的性能和稳定性备受用户称赞。它的优…

数据结构:实验七:数据查找

一、 实验目的 (1)领会各种查找算法的过程和算法设计。 (2)掌握查找算法解决实际问题。 二、 实验要求 (1)编写一个程序exp8-1.cpp, 按提示输入10个任意的整形数据(无序)&…

数字旅游引领未来智慧之旅:科技应用深度重塑旅游生态,智慧服务全面升级打造极致高品质旅游体验

随着信息技术的飞速发展,数字旅游作为旅游业与科技融合的新兴业态,正以其独特的魅力和优势,引领着旅游业迈向智慧之旅的新时代。数字旅游不仅通过科技应用重塑了旅游生态,更通过智慧服务为游客带来了高品质的旅游体验。本文将深入…

从键入网址到网页显示,期间发生了什么?

从键入网址到网页显示,期间发生了什么? 孤单小弟【HTTP】真实地址查询【DNS】指南帮手【协议栈】可靠传输【TCP】远程定位【IP】两点传输【MAC】出口【网卡】送别者【交换机】出境大门【路由器】互相扒皮【服务器与客户端】相关问答 不少小伙伴在面试过程…

浅谈Agent AI智能体的未来

Agent AI智能体的未来非常广阔和潜力巨大。随着技术的发展和应用场景的不断拓展,我们可以期待以下几个方面的发展: 更加智能化:Agent AI智能体将会变得越来越智能,具备更强大的学习、推理和决策能力。它们可以通过大数据和机器学习…

java序列化和反序列化基础学习

一、前言 前文分析了java的反序列化的DNSURL利用链,但是对于java反序列化的一些过程不是很了解,这篇主要记录下学习java反序列基础知识 二、原理 概念 1、什么是序列化和反序列化 (1)Java序列化是指把Java对象转换为字节序列…

【C++】一篇文章带你深入了解stack、queue 和 priority_queue

目录 一、stack的介绍和使用1.1 stack的介绍1.2 stack的使用1.2.1.1 [stack对象的构造](https://legacy.cplusplus.com/reference/stack/stack/stack/)1.2.1.2 stack对象的容量操作1.2.1.2.1 [empty()函数](https://legacy.cplusplus.com/reference/stack/stack/empty/)1.2.1.2…