当前位置: 首页 > news >正文

python: inspect模块各函数的用法

python: inspect模块各函数的用法

inspect模块也被称为 检查现场对象。这里的重点在于“现场”二字,也就是当前运行的状态。
inspect模块提供了一些函数来了解现场对象,包括 模块、类、实例、函数和方法。
inspect函数主要用于以下四个方面

  • 对是否是模块、框架、函数进行类型检查
  • 获取源码包
  • 获取类或者函数的参数信息
  • 解析堆栈

一、inspect模块总览

1、获取成员与判断

  1. inspect.getmembers(object[, predicate])

第二个参数通常可以根据需要调用如下16个方法;

返回值为object的所有成员,以(name,value)对组成的列表

inspect.ismodule(object): 是否为模块

inspect.isclass(object):是否为类

inspect.ismethod(object):是否为方法(bound method written in python)

inspect.isfunction(object):是否为函数(python function, including lambda expression)

inspect.isgeneratorfunction(object):是否为python生成器函数

inspect.isgenerator(object):是否为生成器

inspect.istraceback(object): 是否为traceback

inspect.isframe(object):是否为frame

inspect.iscode(object):是否为code

inspect.isbuiltin(object):是否为built-in函数或built-in方法

inspect.isroutine(object):是否为用户自定义或者built-in函数或方法

inspect.isabstract(object):是否为抽象基类

inspect.ismethoddescriptor(object):是否为方法标识符

inspect.isdatadescriptor(object):是否为数字标识符,数字标识符有__get__ 和__set__属性; 通常也有__name__和__doc__属性

inspect.isgetsetdescriptor(object):是否为getset descriptor

inspect.ismemberdescriptor(object):是否为member descriptor

  1. inspect.getmoduleinfo(path): 返回一个命名元组(name, suffix, mode, module_type)

name:模块名(不包括其所在的package)

  suffix:mode:open()方法的模式,如:'r', 'a'等module_type: 整数,代表了模块的类型
  1. inspect.getmodulename(path):根据path返回模块名(不包括其所在的package)

2、获取源代码

  1. inspect.getdoc(object): 获取object的documentation信息

  2. inspect.getcomments(object)

  3. inspect.getfile(object): 返回对象的文件名

  4. inspect.getmodule(object):返回object所属的模块名

  5. inspect.getsourcefile(object): 返回object的python源文件名;object不能使built-in的module, class, mothod

  6. inspect.getsourcelines(object):返回object的python源文件代码的内容,行号+代码行

  7. inspect.getsource(object):以string形式返回object的源代码

3、类与函数

  1. inspect.getclasstree(classes[, unique])

  2. inspect.getargspec(func)

  3. inspect.getargvalues(frame)

  4. inspect.formatargspec(args[, varargs, varkw, defaults, formatarg, formatvarargs, formatvarkw, formatvalue, join])

  5. inspect.formatargvalues(args[, varargs, varkw, locals, formatarg, formatvarargs, formatvarkw, formatvalue, join])

  6. inspect.getmro(cls): 元组形式返回cls类的基类(包括cls类),以method resolution顺序;通常cls类为元素的第一个元素

  7. inspect.getcallargs(func[, *args][, **kwds]):将args和kwds参数到绑定到为func的参数名;对bound方法,也绑定第一个参数(通常为self)到相应的实例;返回字典,对应参数名及其值;

4、调用栈

  1. inspect.getframeinfo(frame[, context])

  2. inspect.getouterframes(frame[, context])

  3. inspect.getinnerframes(traceback[, context])

  4. inspect.currentframe()

  5. inspect.stack([context])

  6. inspect.trace([context])

相关文章:

python: inspect模块各函数的用法

python: inspect模块各函数的用法 inspect模块也被称为 检查现场对象。这里的重点在于“现场”二字,也就是当前运行的状态。 inspect模块提供了一些函数来了解现场对象,包括 模块、类、实例、函数和方法。 inspect函数主要用于以下四个方面 对是否是模…...

优化代码性能:C#中轻松测量执行时间

概述:本文介绍了在C#程序开发中如何利用自定义扩展方法测量代码执行时间。通过使用简单的Action委托,开发者可以轻松获取代码块的执行时间,帮助优化性能、验证算法效率以及监控系统性能。这种通用方法提供了一种便捷而有效的方式,…...

I2C学习总结

i2c概述 I2C(Inter-Intergreted Circuit) 是一种串行通信协议,用于集成电路之间完成数据传输,i2c用广泛用以各种领域,包括电子设备、嵌入式系统、工业自动化等; i2c仅仅只是一个数据传输的协议&#xff0c…...

libcudart.so libcuda.so之间的关系

libcudart.so 和 libcuda.so 都是 NVIDIA CUDA 库的一部分,它们在 CUDA 平台上扮演不同的角色,但它们之间也存在一些关联。 libcudart.so: libcudart.so 是 CUDA Runtime 库的一部分,它包含了一系列的运行时函数和工具,用于管理和…...

STM32基本定时功能

1、定时器就是计数器。 2、怎么计数? 3、我们需要有一恒定频率的方波信号,再加上一个寄存器。 4、比如每来一个上升沿信号,寄存器值加1,就可以完成计数。 5、假设方波频率是100Hz,也就是1秒100个脉冲。…...

Linux学习:权限

目录 1. shell命令的工作原理与存在意义1.1 shell命令解释器存在的意义1.2 shell解释器的工作原理 2. Linux操作系统:用户2.1 什么是用户2.2 用户的切换操作2.3 用户权限划分的意义 3. Linux中权限的种类和意义3.1 什么是权限3.2 sudo指令与短暂提权 4. 文件类型与文…...

汉诺塔问题代码写法的详细解析

汉诺塔游戏规则: 规则: 汉诺塔问题是一个经典的问题。汉诺塔(Hanoi Tower),又称河内塔,源于印度一个古老传说。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着…...

Python爬虫入门

什么是爬虫 爬虫就是程序,一个能获取互联网上的资源(文字、图片、音视频)数据的程序。 不用爬⾍, 打开浏览器, 输⼊百度的⽹址,就能在浏览器上看到百度的内容了。那换成爬⾍呢? 道理是⼀样的。只不过,是⽤…...

【数据结构学习笔记】选择排序

【数据结构学习笔记】选择排序 参考电子书:排序算法精讲 算法原理 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元…...

小资金适合做伦敦金的投资吗?

在回答这个问题之前,我们首先需要了解伦敦金是什么。伦敦金,也称为伦敦金市场交易的黄金,是一种国际性的金融交易产品,其价格受全球政治、经济、货币政策、供求关系等多种因素影响,波动性较大。因此,投资伦…...

自动化运维工具 ---------------Ansible

一、Ansible 发展史及功能 作者:Michael DeHaan( Cobbler pxe kikstar 与 Func 作者)ansible 的名称来自科幻小说《安德的游戏》中跨越时空的即时通信工具,使用它可以在相距数光年的距离,远程实时控制前线的舰队战斗2…...

富格林:有效做单安全盈利方法

富格林悉知,在伦敦金的投资中,是否安全盈利很大一部分因素取决于是否有效做单,投资者在进入市场之后,需要学习了解伦敦金相关规则,学习一定的做单的技巧,这样有利于我们后续做单顺畅盈利。以下总结几点安全…...

二分查找的理解及应用场景。

一、是什么 在计算机科学中,二分查找算法,也称折半搜索算法,是一种在有序数组中查找某一特定元素的搜索算法 想要应用二分查找法,则这一堆数应有如下特性: 存储在数组中有序排序 搜索过程从数组的中间元素开始&…...

共创时代,品牌如何做好UGC营销?

在当下的互联网时代,众多品牌已经逐渐意识到“产品为重”的影响方式已经很难提升转化率,内容才是吸引用户的必胜法宝,然而当代人被海量信息裹挟,人们的注意力成为稀缺资源,在这个环境下,UGC成为品牌的营销方…...

华为三层交换机:ACL的基本实验

实验要求&#xff1a; PC1不允许访问PC3&#xff0c;PC3可以访问PC1 分析问题&#xff1a; PC1不允许访问PC3&#xff0c;问题中含有“目标地址”则我们需要设置目标地址&#xff0c;这样基本ACL是不行的&#xff0c;必须使用高级ACL [sw1]acl ? INTEGER<2000-2999>…...

基于springboot+vue的旅游管理系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…...

4. git 添加版本标签

要给某一分支的某一提交版本添加标签&#xff08;tag&#xff09;&#xff0c;你首先需要确定该提交版本在分支上的具体哈希值&#xff08;commit hash&#xff09;。 一旦你有了这个哈希值&#xff0c;你就可以像之前描述的那样使用 git tag 命令来创建标签。 以下是如何操作的…...

2024 PhpStorm激活,分享几个PhpStorm激活的方案

文章目录 PhpStorm 公司简介我这边使用PhpStorm的理由PhpStorm 2023.3 最新变化AI Assistant 预览阶段结束 正式版基于 LLM 的代码补全测试代码生成编辑器内代码生成控制台中基于 AI 的错误解释 Pest 更新PHP 8.3 支持#[\Override] 特性新的 json_validate() 函数类型化类常量弃…...

2419. prufer序列(prufer编码,模板题)

活动 - AcWing 本题需要你实现prufer序列与无根树之间的相互转化。 假设本题涉及的无根树共有 n 个节点&#xff0c;编号 1∼n。 为了更加简单明了的描述无根树的结构&#xff0c;我们不妨在输入和输出时将该无根树描述为一个以 n 号节点为根的有根树。 这样就可以设这棵无…...

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:Text)

显示一段文本的组件。 说明&#xff1a; 该组件从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 子组件 可以包含Span和ImageSpan子组件。 接口 Text(content?: string | Resource, value?: TextOptions) 从API versi…...

R语言AI模型部署方案:精准离线运行详解

R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命

在华东塑料包装行业面临限塑令深度调整的背景下&#xff0c;江苏艾立泰以一场跨国资源接力的创新实践&#xff0c;重新定义了绿色供应链的边界。 跨国回收网络&#xff1a;废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点&#xff0c;将海外废弃包装箱通过标准…...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是&#xff1a;将一个 Flask Web 应用生成成纯静态 HTML 文件&#xff0c;从而可以部署到静态网站托管服务上&#xff0c;如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块&#xff0c;它提供了一个轻量级的 HTTP 服务器实现&#xff0c;主要用于构建基于 HTTP 的应用程序和服务。 功能介绍&#xff1a; 主要功能 HTTP服务器功能&#xff1a; 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要&#xff1a; 近期&#xff0c;在使用较新版本的OpenSSH客户端连接老旧SSH服务器时&#xff0c;会遇到 "no matching key exchange method found"​, "n…...

0x-3-Oracle 23 ai-sqlcl 25.1 集成安装-配置和优化

是不是受够了安装了oracle database之后sqlplus的简陋&#xff0c;无法删除无法上下翻页的苦恼。 可以安装readline和rlwrap插件的话&#xff0c;配置.bahs_profile后也能解决上下翻页这些&#xff0c;但是很多生产环境无法安装rpm包。 oracle提供了sqlcl免费许可&#xff0c…...

保姆级【快数学会Android端“动画“】+ 实现补间动画和逐帧动画!!!

目录 补间动画 1.创建资源文件夹 2.设置文件夹类型 3.创建.xml文件 4.样式设计 5.动画设置 6.动画的实现 内容拓展 7.在原基础上继续添加.xml文件 8.xml代码编写 (1)rotate_anim (2)scale_anim (3)translate_anim 9.MainActivity.java代码汇总 10.效果展示 逐帧…...

Neko虚拟浏览器远程协作方案:Docker+内网穿透技术部署实践

前言&#xff1a;本文将向开发者介绍一款创新性协作工具——Neko虚拟浏览器。在数字化协作场景中&#xff0c;跨地域的团队常需面对实时共享屏幕、协同编辑文档等需求。通过本指南&#xff0c;你将掌握在Ubuntu系统中使用容器化技术部署该工具的具体方案&#xff0c;并结合内网…...

密码学基础——SM4算法

博客主页&#xff1a;christine-rr-CSDN博客 ​​​​专栏主页&#xff1a;密码学 &#x1f4cc; 【今日更新】&#x1f4cc; 对称密码算法——SM4 目录 一、国密SM系列算法概述 二、SM4算法 2.1算法背景 2.2算法特点 2.3 基本部件 2.3.1 S盒 2.3.2 非线性变换 ​编辑…...

五、jmeter脚本参数化

目录 1、脚本参数化 1.1 用户定义的变量 1.1.1 添加及引用方式 1.1.2 测试得出用户定义变量的特点 1.2 用户参数 1.2.1 概念 1.2.2 位置不同效果不同 1.2.3、用户参数的勾选框 - 每次迭代更新一次 总结用户定义的变量、用户参数 1.3 csv数据文件参数化 1、脚本参数化 …...