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:这看起来更像是返回值的作业,而不是全局值的作业。