受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()
所以 - 问题是 - 为什么全局变形很糟糕?并且 - 如果你有很多变量,怎么做,在程序的很多部分使用?