0
如果我要向本地模块动态添加属性(在该模块中添加属性),首选以下两种方法中的哪一种?我想让它在Python 2和3以及未来的3.x上都能正常工作。动态地将属性添加到Python中的本地模块
1.
# cat ./test1.py
import sys
def set_attr(name, value):
this = sys.modules[__name__]
setattr(this, name, value)
if __name__ == "__main__":
set_attr("get_doubled", lambda x: x * 2)
set_attr("get_tripled", lambda x: x * 3)
print(get_doubled(1))
print(get_tripled(1))
# python ./test1.py
2
3
2.
# cat ./test2.py
def set_attr(name, value):
globals()[name] = value
if __name__ == "__main__":
set_attr("get_doubled", lambda x: x * 2)
set_attr("get_tripled", lambda x: x * 3)
print(get_doubled(1))
print(get_tripled(1))
# python ./test2.py
2
3
我认为它们是等效的。我想不出他们会有所不同的情景。话虽如此,我更喜欢第一个。它感觉更干净。 – rubik 2014-08-31 14:27:26