内置函数vars()
看起来更像Pythonic,但我更频繁地使用__dict__
。
Python文档表明它们是等效的。
一位博主claims that __dict__
is faster than vars()
。
我应该使用哪种?
答案 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
虽然正确应用的优化确实可以加速代码,但优化很少使用[...]的代码会使代码难以阅读。 [..]首先编写正确的代码,然后快速(如有必要)。
可读性计数。
答案 2 :(得分:10)
我同意vars
应该是首选。我的理由是,随着python的发展,vars
可能会扩展到比__dict__
做更多的事情(例如,为objects with slots工作,可能在3.7中)。