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

Используйте `__dict__` или` vars() `?

Встроенная функция vars() выглядит более Pythonic для меня, но я вижу, что __dict__ используется чаще.

Документация Python указывает, что они эквивалентны.

Один блоггер утверждает, что __dict__ быстрее, чем vars().

Что я буду использовать?

4b9b3361

Ответ 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).