python的全局变量
局部变量:定义在函数内,作用域为函数内。
全局变量:定义在函数外,作用域为全局。
a = "python" # 函数外定义的a为全局变量
def func1():
print (a)
def func2():
b = "小黑屋" # 函数内定义的b为局部变量
print (b)
func1() # 执行函数func1
func2() # 执行函数func2
print(b) # 输出函数func2中的局部变量b
>>python # 函数func1执行后输出全局变量a
>>小黑屋 # 函数func2执行后输出局部变量b
# 在函数外输出局部变量b,出现了未定义的报错
Traceback (most recent call last):
File "<pyshell#11>", line 1, in <module>
print(b)
NameError: name 'b' is not defined
在类的方法中定义全局变量
可行的办法是这样的:假设上下两个界面的文件叫before.py和after.py。在before.py类的方法中定义全局变量VALUE,然后在after.py中import before。在使用的时候就用before.VALUE。
不可以在after.py中使用from before import VALUE,会报错显示after.py中没有VALUE这个东西。
具体原因我不是很清楚,可能是因为如果用第二种方法,在 from before import VALUE时这个类还没有实例化也没有使用这个方法,因此这个全局变量还没有产生。
但是,假设在下一个界面是after2.py。这个时候如果仍然import after以及用after.VALUE就不行,因为after里没有VALUE这个值。after也是引用了before里的VALUE。