是否有任何优雅的方法将对象推入python元组前面?

时间:2015-05-04 12:22:52

标签: python

我正在使用django' debug_toolbar我需要在元组 {{1}中的其他默认中间件之前插入它的中间件类名称} MIDDLEWARE_CLASSES因为它的顺序会影响 debug_toolbar 的行为。

所以我想要的是像

settings.py

而不是

MIDDLEWARE_CLASSES.push_front('debug_toolbar.middleware.DebugToolbarMiddleware')

其中MIDDLEWARE_CLASSES = ('debug_toolbar.middleware.DebugToolbarMiddleware',) + MIDDLEWARE_CLASSES元组

有没有更好的方法可以避免两次写原始元组?

2 个答案:

答案 0 :(得分:4)

元组是不可变的,所以你不能做mytuple.append(value)之类的事情。您将始终需要创建一个新的(或更改其列表的类型,然后插入值并将其更改回来),以便更改变量中的值。如果您的代码不需要使用元组,那么使用列表会更容易。

答案 1 :(得分:2)

如果你不是一个绝对需要一个元组,但是你可以使用

MIDDLEWARE_CLASSES = [... whatever]
MIDDLEWARE_CLASSES.insert(0, 'debug_toolbar.middleware.DebugToolbarMiddleware')

语义列表适用于像井,列表,i。即具有相同(或类似)性质的事物的枚举。元组用于组合事物,通常可以用列表元素发生。

MIDDLEWARE_CLASSES听起来好像你想要列出一些要在中间件中使用的类,所以即使在语义上,列表也会更好。