Python模块中“list = list”的效果是什么?
我在Python标准库/usr/lib/python2.7/multiprocessing/dummy/__init__.py看到以下代码: 
 list = list dict = dict 
 这个成语是什么意思? 我最好的猜测是:“让我们检查是否存在dict和list ”。 这只是古代遗留的代码,没有__builtins__中的list和dict ? 
 而我又有一个疯狂的猜测: 优化从全局范围到模块范围的查询速度移动list 。 这个习语是否合理? 我明白,如果我将它用于多处理,这种假设是错误的。 
出口。 你可以这样做:
 from multiprocessing.dummy import list 
 这恰好是常规list 。 
 没有这一行, multiprocessing.dummy包中将不会有list 。 
 在包之间使用统一的API是明智的。 说所有包都应该提供一个list类。 包select提供一个自定义的实现,但是包b想使用__builtins__ list 。 
 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 
也可以被看作是“如果你想改变我使用的列表的types,在这里改变它”。
 在这个特殊的情况下,它是前者。  list和dict暴露为: 
 manager = multiprocessing.dummy.Manager() l = manager.list() d = manager.dict() 
  Manager的定义是: 
 def Manager(): return sys.modules[__name__] 
 即Manager.list = list 。