使用全局范围变量的最佳实践?

时间:2019-01-12 00:20:36

标签: python

考虑以下代码:

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语言?

1 个答案:

答案 0 :(得分:0)

第二种方法更好。使用参数更加灵活,因为每次调用函数时,它允许使用不同的值。如果您希望使用其他值代替stuff中的addStuff,则必须创建一个全新的函数。此外,使用全局变量通常是不好的做法,因为它会导致难以发现的错误和不必要的复杂性。

另请参阅:Why are global variables evil?