2022-08-29 13:44:20
dict() vs {}:Пустой словарь можно создать разными способами, но одинаковы ли они?
На деле это не так. Они приводят к генерации разного байт-кода. Разобраться во всем поможет ранее разобранный модуль dis:
Про дизассемблирование кода
>>> import dis
>>> dis.dis('{}')
1 0 BUILD_MAP 0
2 RETURN_VALUE
>>> dis.dis('dict()')
1 0 LOAD_NAME 0 (dict)
2 CALL_FUNCTION 0
4 RETURN_VALUE
В первом случае для создания словаря используюется единственная команда BUILD_MAP, а во втором случае идет вызов функции dict, у который где-то внутри вызывается BUILD_MAP.
Очевидно, что это влияет на время выполнения кода:
>>> from timeit import timeit
>>> timeit('{}')
0.01877254199644085
>>> timeit('dict()')
0.04062337501090951
dict() работает в 2 раза медленее, чем {}. Не призываю переписывать старый код, просто на заметку.
Документация dis
@The_Python_Universe #dis
3.9K views10:44