我有一个方法,我已经破碎成更小的嵌套函数,打破了代码库:呼叫嵌套函数在Python
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)
编辑:
我想设置缓存的web服务器,我已经使用pyramid_breaker
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)
这是我的理解可能不准确建立在:
现在我有这个的原因是装饰器用来创建缓存键的命名空间是从函数生成的和争论。因此,您不能只将getDevice放在getThis上,因为请求变量是唯一的,并且缓存是无用的。所以我创建了具有可重复参数(search_term)的内部函数。
但是,为了使缓存无效(即刷新),无效函数需要范围知道'getData'函数,因此也需要嵌套。因此我需要调用嵌套函数。你们美好的人已经明确表明它不可能,所以有人能够解释我如何用不同的结构来做它?
代码'foo.do_this'将尝试访问do_this作为成员本功能离开'foo',它会给你一个属性错误,而不是让foo作为类 – avasal
“分解代码库”是模块名称空间的优点。如果你真的想封装do_函数,那么使用class作为@lazyr显示。 – msw
嵌套函数不是在Python中构造代码的方式(也不是类)。看看[modules](http://docs.python.org/tutorial/modules.html)。 – georg