通过对象访问函数中的变量是全局的还是局部的?[Python]

通过对象访问函数中的变量是全局的还是局部的?[Python],python,scope,Python,Scope,我想知道在函数中声明一个变量,然后将它与对象一起使用是否会使它成为一个全局变量 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_disponi

我想知道在函数中声明一个变量,然后将它与对象一起使用是否会使它成为一个全局变量

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中的作用域是如何工作的。在一般的变量声明中,函数中的变量是局部的,而其他变量是全局的。但您也可以在函数中声明全局变量,在声明之前使用
global var\u name
。比如:

def globalVarFunc():
  # declare global variable x
  global x
  x = 10
  # local variable y
  y = 20

这篇文章可能会对你有所帮助。如果您引用的是
re
,那么您不是在声明它,实际上Python中没有声明,只有赋值,它是一个全局变量。我不确定你的问题是什么。
re
是一个全局变量,因为函数定义
def re():…
creates将函数对象分配给变量
re
。然后,该函数使用全局名称
re
在自身上创建属性。您可以重新分配全局名称re,它将尝试在您分配给该名称的任何对象上创建属性。这段代码没有多大意义。全局范围内函数下面的代码实际上会抛出属性错误,因为您从未实际调用过函数。