Используйте `__dict__` или` vars() `?
Встроенная функция vars()
выглядит более Pythonic для меня, но я вижу, что __dict__
используется чаще.
Документация Python указывает, что они эквивалентны.
Один блоггер утверждает, что __dict__
быстрее, чем vars()
.
Что я буду использовать?
Ответы
Ответ 1
Я бы использовал vars()
.
От: https://wiki.python.org/moin/DubiousPython#Premature_Optimization
В то время как правильно применяемая оптимизация действительно может ускорить работу кода, оптимизирующий код, который редко используется [..], может затруднить чтение кода. [..] Сначала напишите правильный код, затем сделайте его быстрым (при необходимости).
От: Zen of Python
Показатели удобочитаемости.
Ответ 2
Как правило, вы должны рассматривать методы dunder/magic как реализацию и вызывать функции/методы как API, поэтому было бы предпочтительнее использовать vars()
over __dict__
, так же, как вы бы сделали len(a_list)
, а не a_list.__len__()
, или a_dict["key"]
, а не a_dict.__getitem__('key')
Ответ 3
Я согласен vars
. Мое объяснение состоит в том, что, по мере развития python, vars
может быть расширен, чтобы сделать больше, чем __dict__
(например, работает для объектов с слотами, возможно, в 3.7).