Python中的嵌套函数模式的用例是什么?

硝酸银

尽管围绕嵌套函数的构造和使用进行了很多讨论,但是有关何时使用它们的信息很少我想找出的是:什么时候使用嵌套函数是惯用的?什么时候应该使用lambda x: <function>嵌套函数?

Python是一种语言,它使您可以执行许多不应该做的事情(即:使用全局变量)。这个功能是您可以使用的,但您不应该使用吗?

我设想使用一个场景是在单元测试中。假设您定义了这样的方法:

def FunctionOne(varone: int, vartwo: object) -> None:
  assert varone == vartwo() 

vartwo是传递给函数的函数。现在我们要对此进行单元测试。因此,我们编写了一个(部分)单元测试,如下所示:

def unittest() -> None:
  def test_function() -> int:
    return 1
  FuncitonOne(1, test_function)

具体内容如下:

  1. 仅在单元测试功能范围内才需要该功能。
  2. 该函数从未在其他地方调用。

因此,总结一下:您何时(如果有的话)应该在Python中使用嵌套函数?

奥利维尔·梅兰松(OlivierMelançon)

首先,请注意,嵌套函数提供了alambda或global函数没有的功能。

  • 可以通过反对 lambda
  • 通过反对全局功能,它可以关闭

因此,当您需要使用闭包定义多语句函数时,纯粹面向功能的答案就是使用嵌套函数。

这是这种功能的一个例子。

def create_counter(step):
    start = 0
    def count():
        print(start)
        start += step
    return count

请注意,该用例的另一个重复示例是装饰器。

def decorator(f):
    def wrapper(*args):
        ...
        f(*args)
        ...
    return wrapper

@decorator
def my_function(*args):
    ...

您可能要使用嵌套函数的另一个原因是在某种意义上将其设为私有,因为该函数将是本地的,无法全局访问。虽然,我很少看到这种用法有用,因为通过选择适当的函数名称,它不应打扰您在命名空间中使用辅助函数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

vim中“选择模式”的常见用例是什么?

来自分类Dev

Scala中辅助构造函数的用例是什么?

来自分类Dev

Python中的函数模式/谓词匹配

来自分类Dev

Swift 2中引入的可选模式的优点/用例是什么?

来自分类Dev

Haskell的init函数的几个实际用例是什么?

来自分类Dev

IntStream的用例是什么?

来自分类Dev

在Python中中断嵌套函数/构造函数调用的正确方法是什么?

来自分类Dev

用NUnit测试void函数的模式是什么?

来自分类Dev

Python:set.pop()的用例是什么?

来自分类Dev

bash中“ $ *”的一些用例是什么?

来自分类Dev

Android中Property类的用例是什么

来自分类Dev

Scala中“忽略变量”语法的用例是什么?

来自分类Dev

在javascript中应用defineProperties的用例是什么?

来自分类Dev

zsh中COMPLETE_ALIASES的预期用例是什么?

来自分类Dev

Clojure中的* compile-files *的用例是什么?

来自分类Dev

punpcklbw(在MMX / SSE / AVX中交错)的用例是什么?

来自分类Dev

zsh中COMPLETE_ALIASES的预期用例是什么?

来自分类Dev

在javascript中应用defineProperties的用例是什么?

来自分类Dev

ES6中var的用例是什么?

来自分类Dev

tee中-p标志的用例是什么

来自分类Dev

Akka 中 PersistentView 的典型用例是什么?

来自分类Dev

* 不* 重置熊猫中的 groupby 索引的用例是什么

来自分类Dev

在C ++中,将左值完美转发到函数模板的正确方法是什么?

来自分类Dev

在其他函数体内声明函数方法的用例是什么?

来自分类Dev

JavaScript中的工厂模式与构造函数模式

来自分类Dev

Scala匹配表达式中的构造函数模式和变量绑定模式有什么区别?

来自分类Dev

Scala匹配表达式中的构造函数模式和变量绑定模式有什么区别?

来自分类Dev

Repository EF模式中Update函数的意义是什么?

来自分类Dev

Repository EF模式中Update函数的意义是什么?

Related 相关文章

  1. 1

    vim中“选择模式”的常见用例是什么?

  2. 2

    Scala中辅助构造函数的用例是什么?

  3. 3

    Python中的函数模式/谓词匹配

  4. 4

    Swift 2中引入的可选模式的优点/用例是什么?

  5. 5

    Haskell的init函数的几个实际用例是什么?

  6. 6

    IntStream的用例是什么?

  7. 7

    在Python中中断嵌套函数/构造函数调用的正确方法是什么?

  8. 8

    用NUnit测试void函数的模式是什么?

  9. 9

    Python:set.pop()的用例是什么?

  10. 10

    bash中“ $ *”的一些用例是什么?

  11. 11

    Android中Property类的用例是什么

  12. 12

    Scala中“忽略变量”语法的用例是什么?

  13. 13

    在javascript中应用defineProperties的用例是什么?

  14. 14

    zsh中COMPLETE_ALIASES的预期用例是什么?

  15. 15

    Clojure中的* compile-files *的用例是什么?

  16. 16

    punpcklbw(在MMX / SSE / AVX中交错)的用例是什么?

  17. 17

    zsh中COMPLETE_ALIASES的预期用例是什么?

  18. 18

    在javascript中应用defineProperties的用例是什么?

  19. 19

    ES6中var的用例是什么?

  20. 20

    tee中-p标志的用例是什么

  21. 21

    Akka 中 PersistentView 的典型用例是什么?

  22. 22

    * 不* 重置熊猫中的 groupby 索引的用例是什么

  23. 23

    在C ++中,将左值完美转发到函数模板的正确方法是什么?

  24. 24

    在其他函数体内声明函数方法的用例是什么?

  25. 25

    JavaScript中的工厂模式与构造函数模式

  26. 26

    Scala匹配表达式中的构造函数模式和变量绑定模式有什么区别?

  27. 27

    Scala匹配表达式中的构造函数模式和变量绑定模式有什么区别?

  28. 28

    Repository EF模式中Update函数的意义是什么?

  29. 29

    Repository EF模式中Update函数的意义是什么?

热门标签

归档