Python模块中“list = list”的作用是什么?

时间:2012-01-13 12:57:26

标签: python

我在python标准库/usr/lib/python2.7/multiprocessing/dummy/__init__.py中看到了以下代码:

list = list
dict = dict

这个成语是什么意思?我最好的猜测是:“让我们检查dictlist是否存在”。 是list中没有dict__builtins__的古代遗留代码吗?

我还有一个疯狂的猜测:优化查询速度从全局范围移动list到模块范围。关于成语是否是明智的假设?我知道,如果我将它应用于多处理,那么这个假设是错误的。

1 个答案:

答案 0 :(得分:30)

出口。然后你可以这样做:

from multiprocessing.dummy import list

......恰好是常规list

如果没有该行,则list包中将不会有multiprocessing.dummy

跨包有统一的API是明智的。假设所有包都应该提供list类。包a选择提供自定义实现,包b但是想要使用list中的__builtins__

powerful/__init__.py:
from powerfulinternals import PowerfulList as list
from simple.simpleinternals import Something as whoo

simple/__init__.py:
list = list
from simpleinternals import Something as whoo

application.py:
try:
  import powerful as api
else:
  import simple as api

mylist = api.list()
woot = api.whoo()

有更多理由去做这些事情。例如,明确说明您正在使用的内容。

list = list

也可以看作是一个声明“如果你想改变我正在使用的列表类型,请在此处进行更改。”

在这种特殊情况下,它是前者。 listdict公开为:

manager = multiprocessing.dummy.Manager()
l = manager.list()
d = manager.dict()

Manager的定义是:

def Manager():
  return sys.modules[__name__]

即。 Manager.list = list