检查函数是否被修饰

2024-03-21

我正在尝试在类方法中构建一个控制结构,该方法将函数作为输入,并且如果函数被修饰或未修饰,则具有不同的行为。关于如何构建函数的任何想法is_decorated其行为如下:

def dec(fun):
    # do decoration


def func(data):
    # do stuff


@dec
def func2(data):
    # do other stuff


def is_decorated(func):
    # return True if func has decorator, otherwise False


is_decorated(func)  # False
is_decorated(func2) # True

是的,这相对容易,因为函数可以添加任意属性,因此装饰器函数在执行其操作时可以添加一个属性:

def dec(fun):
    def wrapped(*args, **kwargs):
        pass

    wrapped.i_am_wrapped = True
    return wrapped

def func(data):
    ... # do stuff

@dec
def func2(data):
    ... # do other stuff

def is_decorated(func):
    return getattr(func, 'i_am_wrapped', False)


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

检查函数是否被修饰 的相关文章

  • 扭曲多种协议

    我希望为我正在从事的项目学习扭曲 该项目需要服务器响应 HTTP 请求以及通过 TCP 连接的其他协议 Twisted能够同时处理多种协议吗 我想使用 Twisted Web 来帮助处理 HTTP 但同时需要响应其他端口上的 TCP 连接
  • c++11 正则表达式比 python 慢

    嗨我想了解为什么以下代码使用正则表达式进行分割字符串分割 include
  • Native TF 与 Keras TF 性能比较

    我使用本机和后端张量流创建了完全相同的网络 但在使用多个不同参数进行了多个小时的测试后 仍然无法弄清楚为什么 keras 优于本机张量流并产生更好 稍微但更好 的结果 Keras 是否实现了不同的权重初始化方法 或者执行除 tf train
  • 打开文件路径在 python 中不起作用[重复]

    这个问题在这里已经有答案了 我正在编写一个数据库程序 personica 是我的测试主题 我通常在文件路径的位置有一个变量 但出于测试和演示的目的 我只有一个字符串 在我的计算机上的这个确切位置有一个文本文件 顺便说一句 因为我很偏执 所以
  • python:numpy 运行脚本两次

    当我将 numpy 导入到 python 脚本中时 该脚本会执行两次 有人可以告诉我如何阻止这种情况 因为我的脚本中的所有内容都需要两倍的时间 这是一个例子 usr bin python2 from numpy import print t
  • 如何使用格式保存 Tkinter 文本小部件的内容

    我在 python 中使用 Tkinter 在文本窗口中显示输出 我发现使用 get 功能我可以从此窗口检索文本内容 但我有用不同背景颜色标记的文本部分 是否可以将内容与这些颜色一起复制到文件 例如 html 或 doc 中 没有对你想要的
  • 使用 scipy、python、numpy 进行非线性 e^(-x) 回归

    下面的代码为我提供了一条最佳拟合线的平坦线 而不是沿着 e x 模型的一条适合数据的漂亮曲线 谁能告诉我如何修复下面的代码以使其适合我的数据 import numpy as np import matplotlib pyplot as pl
  • R.scale() 和 sklearn.preprocessing.scale() 之间的区别

    我目前正在将数据分析从 R 转移到 Python 当在 R 中缩放数据集时 我将使用 R scale 根据我的理解 它将执行以下操作 x mean x sd x 为了替换该函数 我尝试使用 sklearn preprocessing sca
  • Python 中 eval("input()") 和 eval(input()) 之间的区别

    我正在尝试以下功能 x eval input 输入为 123 x 的类型也是int 它工作正常 In 22 x eval input enter enter 123 In 24 print type x
  • django-allauth:电子邮件确认

    我已经设置了 django allauth 并在新用户注册时使用电子邮件确认 效果很好 但在确认电子邮件中 我得到 Hello from example com You re receiving this e mail because us
  • 无法使用 wxPython 打开在 folium 中生成的本地 HTML 文件

    我目前正在尝试将 GPS 坐标绘制为地图上的标记 并在 wxPython 中显示结果 我使用 folium 绘制坐标标记并生成 HTML 文件 import folium fmap folium Map 43 5321 172 6362 z
  • 如何在solidpython中设置特殊变量$fa、$fs、$fn

    in 上一个线程 https stackoverflow com questions 54040390 how to save data in stl file after python solid processing显示了如何通过 So
  • Python 中的 Firebase 身份验证时出现 KeyError:“databaseURL”

    相信你做得很好 我是 firebase 的新手 正在尝试进行用户身份验证 我已经安装了pyrebase4并在firebase控制台上创建了一个项目 我还启用了使用 电子邮件和密码 登录并尝试连接我的应用程序 下面是我正在尝试的代码 impo
  • 如果任何单元测试失败,如何使 Python 的覆盖率工具失败?

    我想使用 shell 脚本来确保我的单元测试通过and我的代码有足够的测试覆盖率 我只想运行我的测试代码once 我希望我可以通过coverage https coverage readthedocs io 工具和单次运行的工具 如果一项或
  • Python-使用元组作为列表索引[重复]

    这个问题在这里已经有答案了 我有一个元组列表 tuples list 1 0 2 3 3 2 2 0 我想访问二维数组的元素a例如 使用其中一些元组 for i in range 3 print a tuples list i 应该输出的值
  • 内置模块位于哪里?

    我尝试查找列出的所有目录sys path但我找不到任何builtins py文件 那么它在哪里呢 从字面上看 该模块内置于 python 解释器中 gt gt gt import builtins gt gt gt builtins
  • 如何将动态数据传递给装饰器

    我正在尝试编写一个基本的 CRUD 控制器类来执行以下操作 下列的 class BaseCrudController model field validation template dir expose self template dir
  • 如何使用多阶段构建减小 python (docker) 图像大小?

    我正在寻找一种使用 python 和 Dockerfile 创建多阶段构建的方法 例如 使用以下图像 第一张图片 安装所有编译时要求 并安装所有需要的 python 模块 第二张图片 将所有已编译 构建的包从第一个映像复制到第二个映像 而不
  • 将 Python 3 与 AWS lambda 结合使用

    可以在 lambda 中使用使用 Python3 构建的应用程序 而不仅仅是 python2 7 可能会考虑周围的选择 https gun io blog announcing zappa serverless python aws lam
  • 我可以以某种方式“编译”一个Python脚本以在没有安装Python的PC上运行吗?

    所以我有一个Python脚本 myscript py 我是这样执行的 python D myscript py 但是 我必须安装 Python 并将其包含在PATH使其工作的环境变量 是否有可能以某种方式将 Python 可执行文件与 Py

随机推荐

  • 创建图像蒙版

    用户向我的应用程序提供了一张图像 应用程序需要从中制作一个遮罩 对于原始图像中的每个透明像素 蒙版都包含一个红色像素 我尝试了以下方法 Bitmap OrgImg Image FromFile FilePath Bitmap NewImg
  • 自定义添加到购物车按钮,将多个产品添加到购物车并添加数量:woocommerce

    我想创建自定义 添加到购物车 按钮 将我的 3 个产品添加到购物车 每个产品 2 个数量 为了将三个产品添加到购物车中 我已经使用了这样的方法 a class single add to cart button shop skin btn
  • 如何创建部分发票?

    我想从特定订单中为该订单中的某些选定项目创建发票 我已以编程方式成功为整个订单创建了发票 但我想创建该订单的部分发票 最后我明白了 必须挖 magento 才能得到这个 orderid order id order Mage getMode
  • 使用 asciidoctor 创建自定义 HTML

    我正在使用 CMS 来发布我的博客文章 我正在寻找一种从简单的文本文件离线创建 HTML 文章的方法 这是我通常在文章中使用的一段 HTML p We want to show how you can gather information
  • Spring Boot + 云 | Zuul代理 |集成测试

    当使用 Spring Boot 构建微服务时 可以非常轻松地编写大量且非常易读的集成测试并模拟远程服务请求MockRestServiceServer 有没有办法使用类似的方法来执行额外的集成测试ZuulProxy 我想要实现的是能够模拟远程
  • 为什么 C# 编译器在 IL 中发出额外的操作码?

    如果我有一个方法Multiply定义为 public static class Experiment public static int Multiply int a int b return a b 那么为什么编译器会发出这个IL met
  • Nativescript 错误:执行 webpack 失败,退出代码 1

    我已经在新的 iMac 运行 Big Sur 上按照说明仔细安装了 Nativescript 来自https docs nativescript org environment setup html macos ios https docs
  • 在模态页面表上呈现模态表单表

    在 iPad 上 我使用 modalPresentationStyle UIModalPresentationPageSheet 显示模式视图控制器 该视图控制器使用 modalPresentationStyle UIModalPresen
  • Angular 1.5 组件、ui-router 解析、$onChanges 生命周期挂钩

    在以下示例中 plunker https plnkr co edit ChxommnERTmaULmVRNY8 p preview ui router 状态路由到app组件有一个data对象和一个replace使用给定值用新对象替换该对象的
  • Scala specs2 模拟特征方法总是返回 Nullpointer 异常

    我有一个特征 我想在测试期间模拟并在另一个服务中使用该模拟特征 问题是 当我尝试模拟 indexDocuments 函数的返回值时 我收到 NullpointerException 测试方法 createDemand must return
  • Pandas 删除列包含 * 的行

    我试图删除此 df 中 DB Serial 列包含字符 的所有行 DB Serial 0 13058 1 13069 2 13070 3 13070 4 13044 5 13042 我在用 df df df DB Serial str co
  • 如何在 kotlin 中克隆或复制列表

    如何在 Kotlin 中复制列表 我在用着 val selectedSeries mutableListOf
  • 如何设置 raw_input 的时间限制

    在Python中 有没有一种方法可以在等待用户输入时计算时间 以便在30秒后 raw input 函数自动跳过 The 信号 警报 http docs python org library signal html highlight sig
  • 结构复杂的Git SVN克隆

    我需要将 SVN 存储库克隆到 git SVN 存储库的结构就好像它是存储库的存储库 如下所示 SVNRepo ProjectA branches tags trunk file ProjectB branches tags trunk f
  • 为 Content Delivery Web 服务配置环境数据框架时出错

    我正在为 Content Delivery Web 服务配置环境数据框架 当我在浏览器中点击我的服务 url 时 它会抛出以下错误 应用程序中的服务器错误 找不到声明处理器实现类 com tridion ambientdata proces
  • 期望整数表达式

    我想每 5 秒逐行读取我的文件 这次我只是尝试使用一行 bash 命令来执行此操作 bash 命令是 let X 1 while X lt 20 do cat XXX file head X tail 1 X X 1 sleep 5 don
  • Google Play 服务更新到版本 13 后出现错误

    我该如何解决这个错误 引起原因 java lang illegalargumentException 11 01 11 08 12 845 E AndroidRuntime 28885 引起 java lang IllegalStateEx
  • render_to_string方法中的Django自定义context_processors

    我正在构建一个发送电子邮件的函数 并且需要在电子邮件的 HTML 模板中使用 context processor 变量 但这不起作用 Example def send email plain body template name html
  • freopen 未写入指定文件

    我正在尝试使用文件重定向 stdout 和 stderr 的输出 我正在使用 freopen 它会在正确的目录中创建文件 但该文件是空白的 当我注释掉代码以重定向 stdout 和 stderr 时 输出显示在控制台上 这是代码 freop
  • 检查函数是否被修饰

    我正在尝试在类方法中构建一个控制结构 该方法将函数作为输入 并且如果函数被修饰或未修饰 则具有不同的行为 关于如何构建函数的任何想法is decorated其行为如下 def dec fun do decoration def func d