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

时间:2014-01-23 00:47:37

标签: python

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

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

一位博主claims that __dict__ is faster than vars()

我应该使用哪种?

3 个答案:

答案 0 :(得分:44)

通常,您应该将dunder / magic方法视为API的实现和调用函数/方法,因此最好使用vars()而不是__dict__,就像您一样会做len(a_list)而不是a_list.__len__(),或a_dict["key"]而不是a_dict.__getitem__('key')

答案 1 :(得分:11)

我会使用vars()

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

  

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

来自:The Zen of Python

  

可读性计数。

答案 2 :(得分:10)

我同意vars应该是首选。我的理由是,随着python的发展,vars可能会扩展到比__dict__做更多的事情(例如,为objects with slots工作,可能在3.7中)。