Python 在全局模块内设置变量集

Python 在全局模块内设置变量集,python,module,global-variables,Python,Module,Global Variables,我知道有很多问题都在问如何在模块中使用预定义的全局变量,但我想做的恰恰相反——我想获取模块中定义的变量,并使其成为全局变量。代码如下: import badobjectmask as bm bm.getgoodlist(datalen = 13501, listname = list2) print(ra) badobjectmask的模块代码为 global goodlist global ra def getgoodlist(datalen, listname): for f

我知道有很多问题都在问如何在模块中使用预定义的全局变量,但我想做的恰恰相反——我想获取模块中定义的变量,并使其成为全局变量。代码如下:

import badobjectmask as bm

bm.getgoodlist(datalen = 13501, listname = list2)
print(ra)
badobjectmask的模块代码为

global goodlist
global ra

def getgoodlist(datalen, listname):
    for f in range(1):
        for n in range(datalen):
            if (data5[n]['COADD_OBJECT_ID'] in set(listname)) == False:
                fcngoodlist.append(data5[n])
                fcnra.append(data5[n]['RA'])
    goodlist = fcngoodlist
    ra = fcnra
我试着去掉
global
位,而是以

    return
    goodlist = fcngoodlist
    ra = fcnra

并尝试将
global
位也放入函数中。通过所有这些策略,我得到了一个错误
namererror:name'ra'没有定义
,我认为这是因为
ra
变量没有被设置为全局变量。如何解决这个问题?

我只需要在
badobjectmask.py
的范围内定义变量ra和goodlist。然后,您可以通过
从badobjectmask import ra、goodlist导入。我不想让它们仅仅作为副作用出现。就像你说:
从sys导入路径
。该
path
变量是在
sys
模块中分配的,您可以导入该变量。@Dr.V:导入变量的工作方式与导入变量的工作方式不同。导入变量会将其当前值复制到导入命名空间中(如果还没有值,则会引发错误)。这只对常量有意义,或者至少是不应该重新分配的内容。@Cellery:这看起来更像是返回值的作业,而不是全局值的作业。我只想在
badobjectmask.py
的范围内定义变量ra和goodlist。然后,您可以通过
从badobjectmask import ra、goodlist导入。我不想让它们仅仅作为副作用出现。就像你说:
从sys导入路径
。该
path
变量是在
sys
模块中分配的,您可以导入该变量。@Dr.V:导入变量的工作方式与导入变量的工作方式不同。导入变量会将其当前值复制到导入命名空间中(如果还没有值,则会引发错误)。这只对常量或至少对不应该重新分配的内容有意义。@Cellery:这看起来更像是返回值的作业,而不是全局值的作业。