Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“的影响是什么?”;list=list";在Python模块中?_Python - Fatal编程技术网

“的影响是什么?”;list=list";在Python模块中?

“的影响是什么?”;list=list";在Python模块中?,python,Python,我在python标准库/usr/lib/python2.7/multiprocessing/dummy/\uuuu init\uuuu.py中看到了以下代码: list = list dict = dict 这个成语是什么意思?我最好的猜测是:“让我们检查一下dict和list是否存在”。 它只是古代遗留的代码,没有内置的中的列表和目录 我还有另一个疯狂的猜测:优化查找速度,将列表从全局范围移动到模块范围。关于这个成语,这是合理的假设吗?我明白了,如果我将其应用于多处理,那么这个假设是错误的。

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

list = list
dict = dict
这个成语是什么意思?我最好的猜测是:“让我们检查一下
dict
list
是否存在”。 它只是古代遗留的代码,没有
内置的
中的
列表
目录


我还有另一个疯狂的猜测:优化查找速度,将
列表
从全局范围移动到模块范围。关于这个成语,这是合理的假设吗?我明白了,如果我将其应用于多处理,那么这个假设是错误的。

导出。然后,您可以执行以下操作:

from multiprocessing.dummy import list
。。。这恰好是常规的
列表


如果没有该行,包
多处理.dummy
中就不会有
列表

跨包使用统一的API是明智的。假设所有包都应该提供一个
列表
类。包
a
选择提供自定义实现,包
b
但是希望使用
内置的
列表

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
也可以看作是一句话:“如果您想更改我使用的列表类型,请在此处更改。”

在这种特殊情况下,它是前者。
列表
目录
公开如下:

manager = multiprocessing.dummy.Manager()
l = manager.list()
d = manager.dict()
Manager
的定义是:

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

i、 e.
Manager.list=list

(+1)来回答这个有趣的问题。鉴于Python2.6中引入了
多处理
,因此代码似乎不太可能太旧。感谢您的评论!我认为,
multiprocessing
已经足够老了,可以在Python2.4中使用它,因为在文档[1]中没有“自2.6以来”的注释:([1]我认为它在这里并不重要,但有一个“新版本2.6”关于整个模块的注意事项:这是为了向前兼容,还是为什么任何人都需要从
\uuuuuuuuuuuuuuuuuuuuuuu
以外的其他地方导入一个内置代码?还是这与
多处理.dummy
模块的工作方式有关?第二个Kimvais问题。
多处理
不导出
dict
,并且
list
,所以我看不出有什么好的理由这么做。这就是效果,但原因是什么?我想不出它存在的任何原因…看不到
多处理.dummy.list
多处理.dummy.dict
多处理.dummy
实现了
管理器
接口,该接口是已设置为具有
列表
dict
方法。请尝试:
print dir(multiprocessing.dummy.Manager())
(并查看我的最新编辑)作为旁注:这只在模块级起作用;在函数中,您得到赋值前引用的
UnboundLocalError:local变量“list”;为了避免这一问题,您必须
import uuu builtin uu;;list=uu builtin.list
Python 3.x中的builtins