在我看来,内建函数 vars()更像 Python,但我看到 __dict__使用得更频繁。
vars()
__dict__
Python 文档指出它们是等价的。
一个博客 声称 ABC0比 vars()快。
我该用哪个?
一般来说,您应该将 dunder/magic 方法视为实现,并调用函数/方法作为 API,因此最好使用 vars()而不是 __dict__,就像使用 len(a_list)而不是 a_list.__len__(),或者使用 a_dict["key"]而不是 a_dict.__getitem__('key')一样
len(a_list)
a_list.__len__()
a_dict["key"]
a_dict.__getitem__('key')
我会用 vars()。
发信人: https://wiki.python.org/moin/DubiousPython#Premature_Optimization
虽然正确应用的优化确实可以加快代码的速度,但是对很少使用的代码进行优化[。.]会使代码更难阅读。[..]首先编写正确的代码,然后加快速度(如果必要的话)。
发信人: 巨蟒之禅
可读性很重要。
我同意 vars应该是首选。我的理由是,随着 python 的发展,vars可能会扩展到比 __dict__做得更多(例如,在 带槽的物体中工作,可能在3.7中)。
vars