为什么'全局'是坏的,如何避免它们?

时间:2015-02-22 14:28:43

标签: python oop python-2.7 global-variables

this Q的启发,以及我当前的任务。

让我们来看一个小例子:

#!/usr/bin/env python

def one():
    global x
    x = 'Global var'
    print(x)

def two():
    print(x)

one()
two()

好的,global很糟糕。有什么办法?使用参数?像这样:

#!/usr/bin/env python

def one():
#    global x
    x = 'Non global var'
#    print(x)
    return(x)

def two(x):
    print(x)

one()
two(one())

但是 - 如果我有一组vars,那么在其他几个函数中是必需的?例如 - 20个变量。将每个作为单个对象传递?归还某种清单?像这样:

def one():
#    global x
    x = 'Non global var'
    a, b, c = 'a', 'b', 'c'
    list = [a, b, c, x]
#    print(x)
    return(list)

def two(x):
    print(x)

one()
two(one())

或者使用类继承?像这样:

#!/usr/bin/env python

class First:
    def __init__(self):
        self.x = 'Non global var'
        self.a, self.b, self.c = 'a', 'b', 'c'

class Second(First):
    def two(self):
        o = First()
        print(o.x, o.a, o.b, o.c)

a = First()
b = Second()

b.two()

所以 - 问题是 - 为什么全局变形很糟糕?并且 - 如果你有很多变量,怎么做,在程序的很多部分使用?

0 个答案:

没有答案