gpt4 book ai didi

python - Python模块中 "list=list"的作用是什么?

转载 作者:IT老高 更新时间:2023-10-28 21:32:03 25 4
gpt4 key购买 nike

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

list = list
dict = dict

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

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

最佳答案

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

from multiprocessing.dummy import list

...恰好是常规的list .

没有那条线,就没有 list包装内multiprocessing.dummy .

跨包有一个统一的 API 是明智的。假设所有软件包都应该提供 list类(class)。包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 .

关于python - Python模块中 "list=list"的作用是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8850921/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com