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