当前位置: 首页 > 面试题库 >

在Python中嵌套函数时会有开销吗?

巫马庆
2023-03-14
问题内容

在Python中,如果我在父函数中有一个子函数,那么每次调用父函数时,子函数是否“初始化”(创建)?将函数嵌套在另一个函数中是否有任何开销?


问题答案:

是的,每次都会创建一个新对象。除非您处于紧密的循环中,否则这可能不是问题。分析将告诉您是否有问题。

In [80]: def foo():
   ....:     def bar():
   ....:         pass
   ....:     return bar
   ....:

In [81]: id(foo())
Out[81]: 29654024

In [82]: id(foo())
Out[82]: 29651384


 类似资料:
  • 问题内容: 我有一个方法,我已经分解成一些较小的嵌套函数来分解代码库: 有没有一种方法可以单独运行其中一个嵌套函数。例如: 编辑: 我正在尝试在使用pyramid_breaker构建的Web服务器上设置缓存 这是我的理解可能不准确: 现在我有这个原因是因为装饰器用来创建缓存键的名称空间是从函数和争论中产生的。因此,您不能仅将装饰器放在getThis上,因为请求变量是唯一的,并且缓存是无用的。所以我

  • 问题内容: 为什么即使调用时返回并退出,嵌套函数仍会记住第一个值? 问题答案: 您可以看到它,因为所有源自父函数的变量都被子函数内的实际值替换。这样,无需跟踪父函数的范围即可使子函数正确运行。 将其视为“动态创建函数”。 这是python中的基本行为,对多个分配也是如此。 Python将其读取为 基本上,在对它们执行任何操作之前会先插入值。

  • 问题内容: 我知道它看起来会令人费解,但是请帮助我了解发生了什么。 给出: 所以基本上,为什么我没有得到三种不同的动物?是不是“打包”到嵌套函数的局部作用域中?如果不是,对嵌套函数的调用如何查找局部变量? 我知道遇到这类问题通常意味着一个人“做错了”,但是我想了解会发生什么。 问题答案: 嵌套函数在执行时(而不是在定义时)从父范围中查找变量。 编译函数主体,然后验证“自由”变量(未在函数本身中通过

  • 问题内容: 假设我有以下python代码: 我想调用external()返回“字符串已被嵌套函数更改!”,但我得到了“”。我得出结论,Python认为该行是对inner()局部的新变量的声明。我的问题是:如何告诉Python应该使用external()字符串?我不能使用关键字,因为字符串不是全局的,它只存在于外部作用域中。有想法吗? 问题答案: 在Python 3.x中,可以使用关键字: 在Pyt

  • 问题内容: Java编程语言是否有任何扩展使创建嵌套函数成为可能?在很多情况下,我需要创建在另一个方法或for循环的上下文中仅使用一次的方法。到目前为止,尽管用Javascript可以很容易地完成,但我迄今仍无法完成。 例如,这无法在标准Java中完成: 问题答案: Java 8引入了lambda。 该语法可在定义了一种方法的任何接口上使用。因此,您可以将其与一起使用,但不能与一起使用。 是jav

  • 问题内容: 我试图理解reactjs中的一些概念,但是我无法理解函数的嵌套。我创建了以下示例来调查我的担忧。 在下面的示例中,我呈现了一些内容,这些内容的价值来自一系列嵌套函数。但是,出现错误“未捕获的TypeError:无法读取未定义的属性’renderInnerContent’”。您能帮我了解发生了什么以及如何解决此问题吗?我的主要动机是了解如何将事物抽象为不同的功能。 问题答案: 未在该函数