python - Deferred 函数在 Go 中究竟有多大用处以及其他语言中有哪些替代方法?

标签 python go deferred

我知道这是为了推迟一个过程。我还阅读了一些例子,比如在处理文件和其他资源时使用它很好。我的问题是,是否有其他语言(如 Python 等)没有处理它?如果是,Go 如何提供一些独特的功能?

假设有两个函数 f1f2,我想在 f1 完成时调用 f2。我可以做类似的事情:

def f1():
  done = False
  print('I am doing extensive work')
  done = True
  return done

def f2():
  print('here we go')

if f1():
  f2()

延迟是否通过最小化编码工作来做同样的事情?

最佳答案

defer 顾名思义,将延迟执行延迟函数,直到调用函数体退出,无论退出点和条件如何。因此,你的函数 f1 deffering f2 将确保 f2 被调用,即使 f1 中的某些东西失败并出现异常(exception)。我将其视为 try/catch block 中的 finally 子句。

在 python 中,我能想到的最接近 defer 的是 context managers .请注意我是怎么说最接近和不相同的,因为它们的目的有一点重叠,但只是一点点

关于python - Deferred 函数在 Go 中究竟有多大用处以及其他语言中有哪些替代方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46642260/

相关文章:

go - panic : runtime error: index out of range

url - 在 golang 中如何拆分 URL 并从解码组件编码回 URL。有什么包裹吗?

javascript - AngularJS $q promise 成功回调以错误的顺序执行

python - 在 Python 的属性上使用装饰器处理异常

python - 安装两个同名的python模块

java - python:调用java程序

Python 通过使用 python 在 2 个 DataFrame 中设置条件(范围)来合并键

json - 如何在 Go 语言中读取 JSON

php - 有什么办法可以推迟 PHP 代码吗?

javascript - JavaScript 中的 Deferred、Promise 和 Future 有什么区别?