python 全局变量怎么用

如题所述

第1个回答  2017-07-28
在python中,全局变量一般有两种使用方式:
第一种:是在一个单独的模块中定义好,然后在需要使用的全局模块中将定义的全局变量模块导入。
第二种:直接在当前的模块中定义好,然后直接在本模块中通过global声明,然后使用具体的方法如下所示:
第一种:
复制代码
SOLR_URL='http://solr.org'
def tt():
global SOLR_URL
SOLR_URL=SOLR_URL+'#aa'
if __name__=='__main__':
tt()
print SOLR_URL
#输出:
http://solr.org#aa
复制代码
PS:在此种用法中,如果我们在函数tt中不使用global 声明全局变量SOLR_URL,其实也可以使用,但是此时应该是作为一个内部变量使用,由于没有初始值,因此报错Python查找变量是顺序是:先局部变量,再全局变量复制代码
SOLR_URL='http://solr.org'
def tt():
#global SOLR_URL
SOLR_URL=SOLR_URL+'#aa'
if __name__=='__main__':
tt()
print SOLR_URL
#输出:
SOLR_URL=SOLR_URL+'#aa'
UnboundLocalError: local variable 'SOLR_URL' referenced before assignment复制代码
第二种:
global_list.py
GLOBAL_A='hello'
GLOBAL_B='world'
test.py
复制代码
import global_list
def tt():
print global_list.GLOBAL_A
if __name__=='__main__':
tt()
#输出:
hello
第2个回答  2017-07-28
global是全局变量的关键字

举个很简单的栗子:

global a
a = 3def Fuc():
    global a
    print a
    a = a + 1if __name__ == "__main__":
  global a
    for i in range(10):
        Fuc()print 'hello'
    print a

结果是:


如果你不使用全局变量:

count = 0
def Fuc(count):
    print count
    count += 1

for i in range(0, 10):
    Fuc(count)

结果是:

懂了吗?