使用`__dict__`或`vars()`?

Joh*_*hee 40 python

内置函数vars()对我来说看起来更像Pythonic,但我看到__dict__更频繁地使用.

Python文档表明它们是等效的.

一位博客声称__dict__比这更快vars().

我应该用哪个?

Mat*_*vor 51

一般来说,你应该考虑使用dunder/magic方法作为API的实现和调用函数/方法,因此最好使用vars()over __dict__,就像你做的那样len(a_list),不是a_list.__len__(),或者a_dict["key"]不是a_dict.__getitem__('key')


ilj*_*jau 15

我用了vars().

来自:https://wiki.python.org/moin/DubiousPython#Premature_Optimization

虽然正确应用的优化确实可以加速代码,但优化很少使用[...]的代码会使代码难以阅读.[..]首先编写正确的代码,然后快速(如有必要).

来自:Python的禅宗

可读性很重要.

  • 并且"应该有一个 - 最好只有一个 - 明显的做法."...... (5认同)

max*_*max 11

我同意vars应该是首选.我的理由是,随着python的发展,vars可能会扩展为做更多的事情__dict__(例如,为具有插槽的对象工作,可能在3.7中).

  • 但链接的“带槽的对象”的想法被拒绝了。 (3认同)