Подтвердить что ты не робот

Повторное присвоение имени самому себе

Обратите внимание на эти строки в пакете стандартных библиотек multiprocessing:

dict = dict
list = list

Какой смысл переупорядочивать некоторые имена, уже доступные на __builtins__ в области модуля? Чего он пытается достичь? Я искал объяснение в git вине, но это коммитирование было большим и не было никакого соответствующего комментария.

4b9b3361

Ответ 1

Этот код встречается в multiprocessing.dummy, "поддельной" версии multiprocessing, которая реализует функциональность с потоками. Если вы посмотрите вниз на несколько строк, вы увидите

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

multiprocessing.dummy реализует Manager как функцию, которая просто возвращает сам модуль multiprocessing.dummy, поэтому объект модуля multiprocessing.dummy должен предоставить API объекта мультипроцессора Manager. Линии

dict = dict
list = list

чтобы вы могли сделать

m = multiprocessing.dummy.Manager()
d = m.dict()

как если бы у вас был реальный multiprocessing.Manager().