有没有办法在函数运行完成后运行其他函数?

2024-01-08

def foo():
    pass

def bar():
    print 'good bay'

两个功能如打击 现在我想在 foo run 完成后运行 bar 函数

有没有类似类使用的方法__del__? 据我所知,在课堂方法中我可以使用__del__就像下面这样:

 class A(object):
    def __init__(self):
        pass
    def __del__(self):
        bar()

但我不能用foo.__del__还有其他方法可以做到这一点吗?


这就是装饰器的用途。这个装饰器,用在foo with bar作为参数将运行bar after foo并仍然返回foo结果。它将适用于具有任意数量参数的函数。

def run_before(lastfunc, *args1, **kwargs1):
    def run(func):
        def wrapped_func(*args, **kwargs):
            try:
                result = func(*args, **kwargs)
            except:
                result = None
            finally:
                lastfunc(*args1, **kwargs1)
                return result
        return wrapped_func
    return run

def bar():
    print 'goodby'

@run_before(bar)
def foo():
    print "hello"

foo()

编辑:添加了错误处理。谢谢@Björn

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

有没有办法在函数运行完成后运行其他函数? 的相关文章

随机推荐

  • zsh:非法硬件指令 python run.py

    我正在使用 M2 MacBook Air 并使用 Conda 环境 我通过配置通道安装了python3 6 所以在我的 Conda 环境中 当我检查 python version 结果是 Python 3 6 13 我之所以使用python
  • 从 GenericType.class 过滤器获取最通用类型的集合

    我提前为这个糟糕的标题道歉 我们热切接受改进的建议 假设我有一个方法可以过滤List
  • jquery ui spinner 几分钟

    我尝试使用 jquery ui spinner 进行分钟输入 目前它的工作范围为 0 60 但我希望个位数为 00 01 09 两位数 根据the docs http api jqueryui com spinner option numb
  • 保存字体和颜色(delphi)

    我的系统允许用户更改多个表单上多个项目的颜色和字体 我需要一种方法来保存这些字体和颜色 我的系统使用 sql 所以有没有办法将它们保存在那里 或者有其他方法来保存它们 您可以创建第二个名为 users prefereces 的表 其中包含
  • 使用 SSMS 2016 时出错:对象无法从 DBNull 转换为其他类型

    任何人都可以解决这个问题 Windows 10 笔记本电脑上的 SQL Server Management Studio 2016 CTP3 13 0 900 73 对象资源管理器 gt 服务器 gt 数据库 gt 数据库 右键单击 属性
  • 无法将图像推送到 Amazon ECR - 失败并显示“没有基本身份验证凭据”

    我正在尝试将 docker 映像推送到 Amazon ECR 注册表 我正在使用 docker 客户端 Docker 版本 1 9 1 构建a34a1d5 I use aws ecr get login region us east 1获取
  • ipython 安装新模块

    我已经习惯了安装软件包的 R 功能 并且我正在尝试使用 R 来做同样的事情ipython 有时以下方法有效 但有时又无效 我想最终找出为什么它只有效一半的时间 通常要安装一个模块 比如requests例如 我会在打开新终端后输入以下内容 s
  • UICollectionView 不会在 RTL 中从右到左填充数据

    我有一个UICollectionView并想要水平显示单元格 例如 用英语 它应该显示 细胞A 细胞B 细胞C 阿拉伯语 它应该显示 细胞C 细胞B 细胞A 对于 RTL UICollectionViewFlowLayout如果每个单元格大
  • PO 文件本地化未按数据注释的预期工作

    我在我的 asp net core 应用程序中使用了 Orchard Localization 启动 cs services AddPortableObjectLocalization options gt options Resource
  • 谷歌应用程序脚本是同步的吗?

    我是一名 Java 开发人员 同时学习 JavaScript 和 Google Apps 脚本 作为新手 我学习了 JavaScript 的语法 而不是它实际上是如何工作的 我很高兴地使用 Google Apps 脚本并按顺序和同步编写代码
  • Ember.JS 中的动态计算属性已弃用?

    我正在尝试制作一个 ember 应用程序 我有一个计算属性 控制器如下所示 The Controller Todos Controller Ember Controller create SNIP countCompleted functi
  • “eval() uating”条件的替代方法

    在我正在处理的遗留代码库中 有一个条件评估器 它接受用户输入来构建条件 然后使用 php eval 在运行时评估此条件 在不使用 eval 的情况下解决此问题的最佳方法是什么 例如我有一个用户在 UI 中输入的条件 1 gt 0 必须对此进
  • 使用 VBA 从 Excel 工作表更新 SQL

    我正在尝试使用 VBA 从 Excel 工作表更新 SQL 中的一些记录 我在 Excel 工作表中有很多记录 所以这就是为什么我想自动化这一点 以下是我要更新 rmn dr 的字段示例 t id 在两个表中都是唯一的 我想使用 Excel
  • ADB 没有响应 - Android Studio

    不要将其标记为重复项 让我解释一下出了什么问题并告诉你我做了什么 所以这是我的问题 当我打开 Android Studio 时 它给我一个错误 如下所示 然后我进入我的 Windows 防火墙设置 这是我所拥有的 如您所见 防火墙已关闭 然
  • 工作节点组未加入 EKS 集群

    我按照这个博客在 AWS 上设置了 open5GS https aws amazon com blogs opensource open source mobile core network implementation on amazon
  • 为什么 simplexml_load_file 相对于主机文件不起作用?

    I have simplexml load file指令放置在包含的 PHP 文件中 但该指令的工作原理取决于我包含此文件的位置 为什么 是否可以相对于放置的文件指令解释相对文件路径 您始终可以使用魔法访问当前文件的完整路径 FILE ht
  • partial_fit Sklearn 的 MLPClassifier

    我一直在尝试使用Sklearn的神经网络MLPClassifier 我有一个大小为 1000 个实例的数据集 具有二进制输出 我想对其应用带有 1 个隐藏层的基本神经网络 问题是我的数据实例并非同时可用 在任何时间点 我只能访问 1 个数据
  • Erlang 进程与 Java 线程

    我在读Sa a Juri 所著的 Elixir in Action 一书 第一章 https manning content s3 amazonaws com download b b915834 e80b 4520 939d ff1900
  • Delphi 中的嵌套属性

    Delphi 有没有办法使用嵌套属性 目前我正在使用Delphi XE 例如 TCompoundAttribute class TCustomAttribute public constructor Create A1 A2 TCustom
  • 有没有办法在函数运行完成后运行其他函数?

    def foo pass def bar print good bay 两个功能如打击 现在我想在 foo run 完成后运行 bar 函数 有没有类似类使用的方法 del 据我所知 在课堂方法中我可以使用 del 就像下面这样 class