小编use*_*424的帖子

在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
Run Code Online (Sandbox Code Playgroud)

有没有办法单独运行其中一个嵌套函数.例如:

foo.do_this(x,y)
Run Code Online (Sandbox Code Playgroud)

编辑:

我试图在我使用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)
Run Code Online (Sandbox Code Playgroud)

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

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

但是,要使缓存无效(即刷新),失效函数需要知道"getData"函数的范围,因此也需要嵌套.因此我需要调用嵌套函数.你们精彩的人已经说清楚它不可能,所以有人能够解释我如何用不同的结构做到这一点吗?

python nested

15
推荐指数
2
解决办法
2万
查看次数

如何在金字塔中刷新Be​​aker缓存中的所有区域?

我正在尝试在我使用Pyramid构建的Web服务器上设置缓存.我正在使用pyramid_beaker,它创建了一个后端来使用Beaker进行缓存.

我一直在使用缓存区域装饰器来实现缓存.

示例缓存区域如下所示:

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
    try:
         request.matchdict['refresh']
    except:
         pass
    search_term = request.matchdict['searchterm']
    return getData(search_term)
Run Code Online (Sandbox Code Playgroud)

现在缓存工作正常,我可以触发每个区域的缓存刷新,我想知道如何刷新所有区域?

python beaker pyramid

10
推荐指数
1
解决办法
1201
查看次数

Matplotlib刻度标签中的多种颜色

是否可以在标签内设置使用不同颜色格式的刻度标签

例如,使用这样的标签:

labels = ['apple - 1 : 7', 'orange - 5 : 10']
Run Code Online (Sandbox Code Playgroud)

数字1和5显示为蓝色,7和10显示为红色?

python matplotlib

2
推荐指数
1
解决办法
1975
查看次数

如何使用python为'in'实现自定义比较器

如果我有这样的课程:

class foo(object):
    def __init__(self, x, y, z):
         self.x = x
         self.y = y
         self.z = z
Run Code Online (Sandbox Code Playgroud)

在这样的列表中:

list = [foo(1, 2, 3), foo(4, 5, 6), foo(7, 8, 9)]
Run Code Online (Sandbox Code Playgroud)

我怎么能为'in'创建一个自定义测试,它只检查x和z值,这样:

new_foo = foo(1,8,3)
if new_foo in list:
    print True
else:
    print False
Run Code Online (Sandbox Code Playgroud)

会打印True

python

1
推荐指数
1
解决办法
209
查看次数

标签 统计

python ×4

beaker ×1

matplotlib ×1

nested ×1

pyramid ×1