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

在Python中调用嵌套函数

鲁炳
2023-03-14
问题内容

我有一个方法,我已经分解成一些较小的嵌套函数来分解代码库:

def foo(x,y):
    def do_this(x,y):
        pass
    def do_that(x,y):
        pass
    do_this(x,y)
    do_that(x,y)
    return

有没有一种方法可以单独运行其中一个嵌套函数。例如:

foo.do_this(x,y)

编辑:

我正在尝试在使用pyramid_breaker构建的Web服务器上设置缓存

def getThis(request):
    def invalidate_data(getData,'long_term',search_term):
         region_invalidate(getData,'long_term',search_term)
    @cached_region('long_term')
    def getData(search_term):
         return response
    search_term = request.matchdict['searchterm']
    return getData(search_term)

这是我的理解可能不准确:

现在我有这个原因是因为装饰器用来创建缓存键的名称空间是从函数和争论中产生的。因此,您不能仅将装饰器放在getThis上,因为请求变量是唯一的,并且缓存是无用的。所以我创建了具有可重复参数(search_term)的内部函数。

但是,要使缓存无效(即刷新),无效功能需要作用域了解“
getData”功能,因此也需要嵌套。因此,我需要调用嵌套函数。你们真是太好了,人们已经清楚地表明这是不可能的,所以有人能够解释我如何用不同的结构吗?


问题答案:

我假设do_this并且do_that实际上取决于的某些参数foo,因为否则您可以将它们移出foo并直接调用它们。

我建议将整个课程重做为一个类。像这样:

class Foo(object):
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def do_this(self):
        pass

    def do_that(self):
        pass

    def __call__(self):
        self.do_this()
        self.do_that()

foo = Foo(x, y)
foo()
foo.do_this()


 类似资料:
  • 问题内容: 我有以下代码: 有什么方法可以在函数外部调用函数?我试过调用,但我认为它仅在父函数内部可见。 问题答案:

  • 问题内容: 我需要在QueryDsl Native MySQL中运行以下查询。 上面的查询具有嵌套的3个mysql函数,例如cast,json_unquote和json_extract。在QueryDsl中,我为每个函数创建了单独的表达式,如下面的代码所示。 我必须创建更多数量的表达式,而不要创建更多的函数。为了降低复杂性,是否可以在单个表达式中调用多个函数? 问题答案: 我找到了问题的答案。 感

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

  • 问题内容: 我正在使用dict.get(’keyword’)方法查询嵌套字典。目前我的语法是… 但是,有时“父”或“子”标签之一不存在,并且我的脚本失败。我知道使用我可以在表单的键不存在的情况下包括默认值… 但是,如果我有任何,或清空我能想到的,在链接上调用时失败,因为没有方法。 我现在解决这个问题的方法是在每个调用周围使用一连串的顺序,但这似乎是愚蠢的,而且是非Python的- 是否有一种方法可

  • 问题内容: PHP中有一个非常糟糕的限制:如果您调用某个调用a2()的函数a1(),又调用了a3 …,那么何时调用将看到 致命错误:达到最大功能嵌套级别‘100’,正在中止! 有什么方法可以将100个嵌套调用的限制增加到500或10000吗? 这对我来说至关重要,因为我正在开发一个带有很多回调的基于事件的系统。 问题答案: 此错误消息专门来自XDebug扩展。PHP本身没有函数嵌套限制。更改php

  • 问题内容: 在Python中,如果我在父函数中有一个子函数,那么每次调用父函数时,子函数是否“初始化”(创建)?将函数嵌套在另一个函数中是否有任何开销? 问题答案: 是的,每次都会创建一个新对象。除非您处于紧密的循环中,否则这可能不是问题。分析将告诉您是否有问题。