考虑以下代码:
class Test:
def __init__(self):
self._stuff = []
def addStuff(self, what):
self._stuff.append(what)
stuff.append(what)
def addStuff(what):
stuff.append(what)
stuff = ['item1', 'item2', 'item3']
addStuff('stuff1')
Test().addStuff('stuff2')
print stuff # ['item1', 'item2', 'item3', 'stuff1', 'stuff2']
这可以很好地工作并具有预期的结果。但是,我来自Java,因此不得不这样做:
class Test:
def __init__(self):
self._stuff = []
def addStuff(self, stuff, what):
self._stuff.append(what)
stuff.append(what)
def addStuff(stuff, what):
stuff.append(what)
stuff = ['item1', 'item2', 'item3']
addStuff(stuff, 'stuff1')
Test().addStuff(stuff, 'stuff2')
print stuff # ['item1', 'item2', 'item3', 'stuff1', 'stuff2']
结果是相同的。两者之间有什么真正的区别/好处?哪一个被认为是更好的实践/更多的Python语言?
答案 0 :(得分:0)
第二种方法更好。使用参数更加灵活,因为每次调用函数时,它允许使用不同的值。如果您希望使用其他值代替stuff
中的addStuff
,则必须创建一个全新的函数。此外,使用全局变量通常是不好的做法,因为它会导致难以发现的错误和不必要的复杂性。