如何获取Python模块中函数的行号(带/不带装饰器)?

2024-02-12

我想获取源代码中python函数的行号。 我在运行时拥有的是模块、类、方法对象

看过检查

inspect.getsourcelines(object)    

这也给出了结果中的行号。

我看到对于带有装饰器的方法,第 1 行。从上面的检查函数返回指向实际装饰器的源代码而不是所需函数的源代码。 那么有什么办法可以解决这个问题吗? (我知道解释器会在运行时将函数包装在装饰器内,但我可能是错的)


一般情况下没有简单的解决方案。

装饰器是一个给定函数返回一个函数的函数,通常通过将其“包装”在一个闭包中来执行装饰器设计的操作。

然而,文件和行号信息并不在函数对象本身中,您无法通过将此信息从包装函数复制到包装器来“修复”它们。该数据包含在code函数的对象(可用于.func_code),并且它在您要创建的所有闭包之间共享。

>>> def bar(x):
...     def foo():
...         return x
...     return foo
... 
>>> f1 = bar(1)
>>> f2 = bar(2)
>>> f1()
1
>>> f2()
2
>>> f1.func_code is f2.func_code
True
>>> 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何获取Python模块中函数的行号(带/不带装饰器)? 的相关文章

  • 导入错误:无法导入名称“FFProbe”

    我无法获取ffprobe包 https github com simonh10 ffprobe在 Python 3 6 中工作 我使用 pip 安装它 但是当我输入import ffprobe it says Traceback most
  • GUI 测试工具 PyUseCase 与 Dogtail 相比如何?

    GUI测试工具如何Py用例 http pypi python org pypi PyUseCase重命名为故事文本 http pypi python org pypi StoryText 相比于Dogtail http en wikiped
  • 使用管理员权限打开cmd(Windows 10)

    我有自己的 python 脚本来管理我的计算机上的 IP 地址 它主要在命令行 Windows 10 中执行netsh命令 您必须具有管理员权限 这是我自己的计算机 我是管理员 运行脚本时我已经使用管理员类型的用户 Adrian 登录 我无
  • 使用 Python 和 lmfit 拟合复杂模型?

    我想适合椭偏仪 http en wikipedia org wiki Ellipsometry使用 LMFit 将数据转换为复杂模型 两个测量参数 psi and delta 是复杂函数中的变量rho 我可以尝试将问题分离为实部和虚部共享参
  • 动态字段取决于 WTForms 的先前字段

    我正在使用 WTForms 制作表格 目前 我有这个 class UploadForm flask wtf Form fichier wtforms fields FileField u Fichier description wtform
  • NSUserNotificationCenter.defaultUserNotificationCenter() 使用 PyInstaller 返回 None

    我正在尝试将通知发送到通知中心 Mac OSX 我正在使用 PyObjC 绑定来使用我们的 python 应用程序中的 cocoa api 我正在使用以下代码片段 import Foundation import objc NSUserNo
  • 使用 scikit 时 scipy.sparse 矩阵的缩放问题

    在使用 scikit learn 解决机器学习问题时 我需要在使用 SVM 进行训练之前对 scipy sparse 矩阵进行缩放 但在文档 http scikit learn org stable modules preprocessin
  • 获取 Keras model.summary() 作为表

    我在 Keras 中创建了相当大的模型 我正在用 LaTeX 写一篇关于它的文章 为了很好地描述 LaTeX 中的 keras 模型 我想用它创建一个 LaTeX 表 我可以手动实现它 但我想知道是否有任何 更好 的方法来实现这一点 我四处
  • 列表推导式和 for 循环中的 Lambda 表达式[重复]

    这个问题在这里已经有答案了 我想要一个 lambda 列表 作为一些繁重计算的缓存 并注意到这一点 gt gt gt j for j in lambda i for i in range 10 9 9 9 9 9 9 9 9 9 9 Alt
  • 无法通过 Android 应用程序访问我的笔记本电脑的本地主机

    因此 我在发布此内容之前做了一项研究 我发现的解决方案不起作用 更准确地说 连接到我的笔记本电脑的 IPv4192 168 XXX XXX 没用 连接到10 0 2 2 加上端口 不起作用 我需要测试使用 Django Rest 框架构建的
  • 使用 python 脚本更改 shell 中的工作目录

    我想实现一个用户态命令 它将采用其参数之一 路径 并将目录更改为该目录 程序完成后 我希望 shell 位于该目录中 所以我想实施cd命令 但需要外部程序 可以在 python 脚本中完成还是我必须编写 bash 包装器 Example t
  • Flymake的临时文件可以在系统临时目录下创建吗?

    我目前正在使用以下代码在 emacs 中连接 Flymake 和 Pyflakes defun flymake create temp in system tempdir filename prefix make temp file or
  • Eclipse/PyDev 中未使用导入警告,尽管已使用

    我正在我的文件中导入一个绘图包 如下所示 import matplotlib pyplot as plt 稍后我会在我的代码中成功使用此导入 fig plt figure figsize 16 10 然而 Eclipse 告诉我 未使用的导
  • 如何将 URL 添加到 Telegram Bot 的 InlineKeyboardButton

    我想制作一个按钮 可以从 Telegram 聊天中在浏览器中打开 URL 外部超链接 目前 我只开发了可点击的操作按钮 update message reply text Subscribe to us on Facebook and Te
  • 如何在引发异常时将变量传递给异常并在异常时检索它?

    现在我只有一个空白的异常类 我想知道如何在引发变量时给它一个变量 然后在 try except 中处理它时检索该变量 class ExampleException Exception pass 为其构造函数提供一个参数 将其存储为属性 然后
  • 从给定的项目列表创建子列表

    我首先要说的是以下问题不是为了家庭作业目的即使因为我几个月前就完成了软件工程师的工作 无论如何 今天我正在工作 一位朋友向我询问了这个奇怪的排序问题 我有一个包含 1000 行的列表 每行代表一个数字 我想创建 10 个子列表 每个子列表都
  • ProcessPoolExecutor 传递多个参数

    ESPN播放器免费 class ESPNPlayerFree def init self player id match id match id team 团队名单1 277906 cA2i150s81HI3qbq1fzi za1Oq5CG
  • PyObjC + Python 3.0 问题

    默认情况下 Cocoa Python 应用程序使用默认的 Python 运行时版本 2 5 如何配置我的 Xcode 项目以便它使用较新的 Python 3 0 运行时 我尝试用新版本替换项目中包含的Python framework 但它不
  • 从 Django 运行 shell 命令

    我正在 Django 中开发一个网页 使用 apache 服务器 需要调用 shell 命令来启用 禁用一些守护进程 我尝试这样做 os system service httpd restart 1 gt HOME out 2 gt HOM
  • Tkinter 将鼠标点击绑定到框架

    我一定错过了一些明显的东西 我的 Tkinter 程序中有两个框架 每个框架在网格布局中都有一堆标签 我想将鼠标点击绑定到其中一个而不是另一个 我目前使用 root bind

随机推荐

  • 从“NSDecimal”或“NSDecimalNumber”转换为 C# 的“decimal”类型

    我有一个NSDecimalNumber来自 StoreKit 的SKProduct类 我想将其转换为 C 的decimal类型以尽量减少精度损失 有没有直接的方法来做这样的事情 我想我的两个选择是 假设我了解每个的二进制实现并进行我自己的按
  • AngularJS 将数据传递给 $http.get 请求

    我有一个执行 http POST 请求的函数 代码如下 这很好用 http url user update path method POST data user id user id draft true 我有另一个 http GET 函数
  • webpack-dev-server 未重新加载

    我正在使用 webpack 5 目前有以下设置 webpack prod js 我有一些用于生产的特定配置 例如图像压缩 开发工具 CSS 缩小 特定元标记值 webpack dev js 我有一些用于开发的特定配置 例如 无图像压缩 无
  • 防止 CMake 查看库和包含的路径

    考虑下面的简单 CMake 脚本 试图找到一个虚构的theheader hC 头文件 据我所知 这是在目录中查找库的包含目录的典型方法FindXXX cmake模块 cmake minimum required VERSION 2 6 pr
  • 在meteor中,pub/sub可以用于任意内存对象(不是mongo集合)

    我想在我的流星应用程序中建立双向 双向 通信 但我需要在不使用 mongo 集合的情况下做到这一点 那么 pub sub 可以用于任意内存对象吗 有没有更好 更快或者更低级的方法 性能是我最关心的问题 Thanks 是的 pub sub 可
  • 在 PHP 中为 MySQL 表的每一行添加一个删除按钮

    我试图在每一行添加一个删除按钮 以便按下按钮时可以删除记录 我是 PHP MySQL 和 Stack Overflow 的新手 下面是我的表 它从我的 MySQL 数据库中提取信息并且有效 table class table tr th S
  • 重新定义(#define)保留的C++关键字

    是否可以使用 define 重新定义 C 关键字 ifdef int undef int define int 2 endif int main Do something with int 在这种情况下我看不到输出 但我想了解内部发生的情况
  • 如何使用 Jquery Knob 显示单位

    我正在使用 Jquery 旋钮 http anthonyterrien com knob http anthonyterrien com knob 并且它工作得很好 但我不想在中间显示无量纲数字 我想用它显示单位 ei 或 F 等 我该怎么
  • 构建 conda 配方时如何修复 conda“ResolvePackageNotFound”

    我从 github 下载了一个 conda 包 进行了一些修改 并想在 conda 环境中构建这个本地包并测试我的更改 问题是配方的构建失败 因为 conda 有一个conda exceptions ResolvePackageNotFou
  • 可以显示 Python 输入编辑的默认值吗?

    python 是否可以接受这样的输入 Folder name Download 但用户无需输入 下载 它就已作为初始值存在 如果用户想要将其编辑为 下载 他所要做的就是添加一个 s 并按 Enter 键 使用普通输入命令 folder in
  • 如何分离 Firebase 数据库中的测试数据和生产数据?

    每个 Firebase 项目仅包含一棵数据 JSON 树 最佳实践规定测试应该在与生产数据不同的数据库上运行 实现这一目标的最简单方法是什么 我考虑过的一些事情 在同一项目中使用多个子树进行测试和生产 这看起来很混乱 并且测试和生产数据很难
  • 使用 Java 和 jmf 从网络摄像头捕获实时视频

    为了使用 java 和 jmf 从网络捕获实时视频 我编写了以下代码 我还插入了 USB 网络摄像头 但它给出了java util NoSuchElementException有人请帮助我 import java util Vector i
  • Zend Framework 中使用的设计模式 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • ActionBarActivity 在电话上捕获错误

    建议我使用 ActionBar Activity 这是之前的代码 import android support v7 app ActionBar import android support v7 app ActionBarActivity
  • C# 在没有 Excel 的情况下将 .xls 转换为 .csv [重复]

    这个问题在这里已经有答案了 需要在 C ASP net Web 应用程序中不使用 Excel 的情况下将 xls 或 xlsx 转换为 csv 该应用程序当前正在使用 NPOI dll 来实现某些功能 但我在 codeplex wiki 上
  • Chartjs - 在整数 x 轴值上绘制垂直线

    在下面的示例中 chartjs 注释使用字符串值 MAR 但不是整数值 如何在某个整数 x 轴值上绘制垂直线 var chartData labels JAN FEB MAR datasets data 12 3 2 window onlo
  • 致命错误:不在对象上下文解释中使用 $this?

    我遇到了这个奇怪的错误 这是我以前从未遇到过的 致命错误 不在对象上下文中使用 this Chat php 类
  • 避免 Spring AOP 中的就地切入点表达式

    我正在使用 Spring AOP 我给出的切入点如下 Pointcut execution com demo Serviceable public void serviceMethodCalls 是否可以避免 Spring AOP 中的就地
  • 使用正斜杠作为 ID 属性

    刚刚发现您可以使用 任何 unicode 字符作为 ID 属性 这为我打开了一个全新的世界 但我试图将 ID 属性设置为 name 并且它不想工作 这是我所得到的 http jsfiddle net z2xkm9pr http jsfidd
  • 如何获取Python模块中函数的行号(带/不带装饰器)?

    我想获取源代码中python函数的行号 我在运行时拥有的是模块 类 方法对象 看过检查 inspect getsourcelines object 这也给出了结果中的行号 我看到对于带有装饰器的方法 第 1 行 从上面的检查函数返回指向实际