繁体   English   中英

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

[英]Best practice for using global scoped variables?

考虑以下代码:

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

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

另请参阅: 为什么全局变量有害?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM