【发布时间】:2020-10-30 03:20:40
【问题描述】:
我想知道如果在函数中声明一个变量,然后将它与一个对象一起使用会使其成为一个全局变量
def re():
re.termine = False
re.rect_circle_switch = True
re.case1_disponible = True
re.case2_disponible = True
re.case3_disponible = True
re.case4_disponible = True
re.case5_disponible = True
re.case6_disponible = True
re.case7_disponible = True
re.case8_disponible = True
re.case9_disponible = True
if rect.rec_1.collidepoint(pos) and re.case1_disponible==True:
if re.rect_circle_switch == True :
pygame.draw.line(fenetre,noir,(50,50),(150,150),10)
pygame.draw.line(fenetre,noir,(142, 56),(51, 145),10)
re.rect_circle_switch = False
我假设它在使用后仍然是本地的,但我真的不明白作用域在 python 中是如何工作的
【问题讨论】:
-
这篇文章可能对您有所帮助。 stackoverflow.com/questions/423379/…
-
如果你指的是
re,你并没有声明它,实际上Python中没有声明,只有赋值,它是一个全局变量。我不确定你的问题是什么。 -
re是一个全局变量,因为函数定义def re(): ...creates 将函数对象分配给变量re。然后该函数使用全局名称re在自身上创建属性。您可以重新分配全局名称 re,它会尝试在您分配给该名称的任何对象上创建属性。这段代码没有多大意义。全局范围内函数下方的代码实际上会引发属性错误,因为您从未真正调用过该函数。