向 Python 添加宏

2024-01-08

我想调用以下代码in-situ无论我提到什么MY_MACRO在我下面的代码中。

# MY_MACRO
frameinfo = getframeinfo(currentframe())
msg = 'We are on file ' + frameinfo.filename + ' and line ' +  str(frameinfo.lineno)
# Assumes access to namespace and the variables in which `MY_MACRO` is called. 
current_state = locals().items()

这是一些会使用的代码MY_MACRO:

def some_function:
    MY_MACRO

def some_other_function:
    some_function()
    MY_MACRO

class some_class:
  def some_method:
     MY_MACRO

如果有帮助:

  1. 我想拥有这种能力的原因之一是因为我想避免重复以下代码MY_MACRO无论我在哪里需要它。拥有一些简短而简单的东西会非常有帮助。
  2. 另一个原因是因为我想在宏中嵌入 IPython shell,并且我想访问其中的所有变量locals().items() (see 这另一个问题 https://stackoverflow.com/questions/15669186/using-ipython-as-an-effective-debugger)

这在 Python 中可能吗?让它发挥作用的最简单方法是什么?

Please NOTE该宏假定可以访问调用它的范围的整个命名空间(即只是放置代码MY_MACRO in 某个功能不起作用)。另请注意,如果我放置MY_MACRO在一个函数中,lineno会输出错误的行号。


MacroPy https://github.com/lihaoyi/macropy是我的一个项目,它将语法宏引入 Python。该项目只有 3 周的历史,但如果您查看链接,您会发现我们有一个非常酷的演示集合,您想要的功能绝对可以使用它来实现。

另一方面,Python 具有一些非常惊人的自省功能,因此我怀疑您可能能够纯粹使用该功能来完成您想要的事情。

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

向 Python 添加宏 的相关文章

  • 为什么 Python 在导入脚本时只保存脚本的字节码?

    既然执行Python字节码会比运行原始源代码更快 因为Python不需要重新编译 为什么Python在导入脚本时只保存编译后的字节码呢 为每个执行的脚本保存 pyc 文件不是更好吗 无论如何 Python 解释器的启动时间都需要时间 即使您
  • 在 Python 2.7 中出现“ImportError:无法导入名称 HTTPSConnection”错误

    我正在尝试在 AWS ElasticBeanstalk 中部署 django 当我按照所示步骤操作时here http docs aws amazon com elasticbeanstalk latest dg create deploy
  • 为什么需要在 Python 方法中显式使用“self”参数? [复制]

    这个问题在这里已经有答案了 当在 Python 中的类上定义方法时 它看起来像这样 class MyClass object def init self x y self x x self y y 但在其他一些语言中 例如 C 您可以使用
  • 在Python中,如何将矩阵逆时针旋转90度?

    gt gt gt def rotate matrix k List List int For example if I have m 1 2 3 2 3 3 5 4 3 rotate matrix m should give me 3 3
  • Flask 中“缺少 CSRF 令牌”,但它在模板中呈现

    问题 当我尝试登录 使用 Flask login 时 我得到Bad Request The CSRF session token is missing但令牌正在呈现 在模板中 secret key 已设置 并且我在本地运行localhost
  • 雅虎财务请求功能出现 404 客户端错误

    yahoo Financials的请求功能出现404 Client Error 直接点击以下网址没有问题 https finance yahoo com quote AAPL financials p AAPL https finance
  • 类型错误:“datetime.datetime”和“str”的实例之间不支持“>”

    我是 python 日期和时间类型的新手 我有一个日期值 date 2018 11 10 10 55 31 00 00 我需要检查该日期值是否超过 90 天 我试过 from datetime import datetime from da
  • 使用pathlib获取主目录

    翻看新的pathlib在 Python 3 4 中 我注意到没有任何简单的方法来获取用户的主目录 我能想到的获取用户主目录的唯一方法是使用旧的os path像这样的库 import pathlib from os import path p
  • Django 多对多关系(类别)

    我的目标是向我的 Post 模型添加类别 我希望以后能够按不同类别 有时是多个类别 查询所有帖子 模型 py class Category models Model categories 1 red 2 blue 3 black title
  • 设置高亮大括号的 vim 颜色主题

    如何更改突出显示大括号的 vim 配色方案 我希望实际编辑 vim 主题文件以使更改永久生效 问候 克雷格 匹配括号的自动高亮颜色称为MatchParen 您可以通过执行以下操作来更改 vimrc 中的颜色 highlight MatchP
  • Python 属性和 Swig

    我正在尝试使用 swig 为一些 C 代码创建 python 绑定 我似乎遇到了一个问题 试图从我拥有的一些访问器函数创建 python 属性 方法如下 class Player public void entity Entity enti
  • Seaborn 中没有线性拟合的散点图

    我想知道是否有办法关闭seaborn中的线性拟合lmplot或者是否有一个等效函数可以生成散点图 当然 我也可以使用 matplotlib 但是 我发现 seaborn 中的语法和美学非常吸引人 例如 我想绘制以下情节 import sea
  • 如何按 pandas 中的值对系列进行分组?

    我现在有一只熊猫Series与数据类型Timestamp 我想按日期对其进行分组 并且每组中有许多行具有不同的时间 看似显而易见的方法类似于 grouped s groupby lambda x x date 然而 熊猫的groupby按索
  • 无法导入QUERY_TERMS

    我正在运行一个网站Python and Django Django filters 2 1 installed Django 2 1 installed 当我运行时 我收到以下错误 importError Could not import
  • 如何使用 enumerate 来倒数?

    letters a b c 假设这是我的清单 在哪里for i letter in enumerate letters 将会 0 a 1 b 2 c 我怎样才能让它向后枚举 如 2 a 1 b 0 c 这是一个很好的解决方案并且工作完美 i
  • Python 相当于 Scala 案例类

    Python 中是否有与 Scala 的 Case Class 等效的东西 就像自动生成分配给字段而无需编写样板的构造函数一样 当前执行此操作的现代方法 从 Python 3 7 开始 是使用数据类 https www python org
  • pandas.read_fwf 忽略提供的数据类型

    我正在从文本文件导入数据框 我想指定列的数据类型 但 pandas 似乎忽略了dtype input 一个工作示例 from io import StringIO import pandas as pd string USAF WBAN S
  • 使用 MPI 的 Allreduce 对 Python 对象求和

    我正在使用使用 Python 中的字典和计数器构建的稀疏张量数组操作 我想让并行使用这个数组操作成为可能 最重要的是 我最终在每个节点上都有计数器 我想使用 MPI Allreduce 或另一个不错的解决方案 将其添加在一起 例如 使用计数
  • MoviePY 无法在 Windows 上检测 ImageMagick 二进制文件

    我刚买了一台新笔记本电脑 想要设置MoviePY在那新的Windows 64x Python3 7 0 机器 我对所有内容都进行了三次检查 但是当涉及到我的代码的文本部分时 它向我抛出了这个错误 OSError MoviePy Error
  • 在Python中停止ThreadPool中的进程

    我一直在尝试为控制某些硬件的库编写一个交互式包装器 用于 ipython 有些调用对 IO 的影响很大 因此并行执行任务是有意义的 使用 ThreadPool 几乎 效果很好 from multiprocessing pool import

随机推荐

  • 无法进入 dll(pdb 可用)

    我有一个包含许多项目的解决方案 其中一些位于解决方案路径之外 我使用 xcopy 将编译后的 dll 和 pdb 复制为构建后事件 如果我想进入 dll 它们位于我的解决方案之外 当前不会命中断点 尚未加载任何符号 对于本文档 所有文件 d
  • 应用程序启动器图标错误

    清单定义了我想要的应用程序图标 但是当我部署应用程序时 应用程序图标是一个完全不同的图标 可能发生了什么 在我的任何项目文件中都找不到显示为图标的图像 我根本没有移动我的 ic launcher 图像 因此它们仍然位于相应的可绘制文件夹中
  • 如何在Javascript中仅使用过滤器获取唯一数组[重复]

    这个问题在这里已经有答案了 我有一个数组 var a 2 3 4 5 5 4 我想从给定的数组中获取唯一的数组 例如 b 2 3 4 5 我努力了 a filter function d return b indexOf d gt 1 而且
  • 如何实现brew 配方的安装或升级?

    我想安装一个酿造配方或升级它 如果已经使用 bash 安装 仅当最后未安装配方时 该命令才应返回非零退出代码 附言 应该注意的是brew install xxx返回错误代码如果xxx已安装 背景 https github com Homeb
  • 如何从存储中获取准确的容量

    我想以编程方式从实习存储中读取确切的容量 我使用的是 Samsung Galaxy S7 Edge 32GB 设备 在预装的三星文件管理器 德语 Eigene Dateien 中 它显示了 32GB 的总容量 即使在菜单 gt 设置 gt
  • 实体框架 - 通过同一列中的多个条件进行选择 - 引用表

    示例场景 两张表 order and 订单项目 关系一对多 我想选择至少有一个价格为 100 的 orderItem 和至少一个价格为 200 的 orderItem 的所有订单 我可以这样做 var orders from o in ko
  • 用于查找给定文档的词频的 Python 脚本

    我正在寻找一个简单的脚本 可以找到给定文档的单词频率 可能通过使用便携式词干分析器 是否有任何库或简单的脚本可以执行此过程 use nltk http www nltk org import nltk YOUR STRING Your wo
  • Typescript Node.js 最简单的设置不起作用 - 错误 TS2307:找不到模块“fs”

    我已经全局安装了 TS 和节点类型 PS C Projects Test gt npm list global depth 0 C Users Jan AppData Roaming npm types email protected cd
  • 我知道react-native的TextInput有一个onsubmit回调函数,但是我实际上如何制作那个提交按钮?

    我想知道如何呈现此按钮 如果是的话 它是否会自动绑定到输入字段中的文本 基本上onSumbitEditing当从 Android 软键盘上单击 go 按钮时 将触发并提供事件 如下例所示
  • 承诺:转到下一个错误函数[重复]

    这个问题在这里已经有答案了 如何使用 Promise 链调用下一个错误函数 我认为错误函数内的返回会自动调用下一个错误函数 Called in a controller dataService saveRequest then functi
  • 如何在VSCODE中设置tasks.json文件来编译Fortran程序?

    我想设置 VScode 操作系统 Windows 10 来创建并编译用 Fortran 90 95 编写的程序 我可以通过在终端中输入以下内容来完成此操作 gfortran o Example exe Example f90进而 Examp
  • 捕获 python 程序的标准输出

    我正在尝试编写一个 C 程序来捕获 python 程序中的标准输出 我的问题是所有输出都是在程序执行之后而不是实际发生时出现的 举个例子 对于这个 python 程序 print Hello time sleep 2 print Hello
  • 在 net core 控制台应用程序中使用 Web 服务器进行简单路由

    我在使用 kestrel 进行路由时遇到问题 我找不到任何关于如何在 netcore 控制台应用程序内部实现此功能的好的教程 我想构建一个简单的 Web 服务器 它有 2 3 个可以访问的端点 public class WebServer
  • 由于非 Ascii 字符,顶点着色器无法编译?

    因此 我开始使用 OpenGL 与 glew 和 GLFW 来创建游戏引擎 在开始使用着色器时我几乎立即遇到了问题 它们没有被使用或者即使被使用也没有任何效果 我一直在用大量其他示例检查我的代码 它们都匹配 没有任何看起来不合适的地方 我开
  • 访问控制允许来源语法

    我希望允许所有的跨源资源共享from example com 的子域 因此 我将如下所示的跨源资源共享标头添加到了页面中subdomain1 to example com
  • 如何将全部破坏限制为仅长单词?

    我正在尝试全部打破很长的单词 还有一些很长的uuid col在基于引导程序的模板中 但是当我对所有列使用以下样式时 它会破坏所有内容 在示例中检查不良破坏 即使单词正常换行的地方工作得很好 在示例中检查预期破坏 有没有办法我可以尽可能使用正
  • Webpack 无法加载字体(ttf)

    目前我有 3 种字体想要添加到我的 React 项目中 一个 一个光 一个大胆 我的文件结构 src fonts A ttf A light ttf A bold ttf styles base base scss styles scss
  • 限制对 C++ 中特定类的方法访问

    我有两个密切相关的类 我将其称为 Widget 和 Sprocket Sprocket 有一组方法 我希望可以从 Widget 调用它们 但不能从任何其他类调用它们 我也不想仅仅将 Widget 声明为 Spocket 的友元 因为这将使
  • 如何访问 OpenCV Matcher 上的点位置?

    我正在使用这个 FLANN 匹配器算法来匹配 2 张图片中的兴趣点 代码如下所示 有时代码会找到匹配点的列表 std vector
  • 向 Python 添加宏

    我想调用以下代码in situ无论我提到什么MY MACRO在我下面的代码中 MY MACRO frameinfo getframeinfo currentframe msg We are on file frameinfo filenam