【问题标题】:Are variables inside a function accessed through an object global or local? [Python] [duplicate]函数内部的变量是通过对象全局还是局部访问? [Python] [重复]
【发布时间】: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,它会尝试在您分配给该名称的任何对象上创建属性。这段代码没有多大意义。全局范围内函数下方的代码实际上会引发属性错误,因为您从未真正调用过该函数。

标签: python scope


【解决方案1】:

在一般的变量声明中,函数内部的变量是局部变量,其他变量是全局变量。但是你也可以在函数内部声明全局变量,在声明它之前使用global var_name。喜欢:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-02
    • 1970-01-01
    • 2012-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多