Python 函数不更新全局变量

Python 函数不更新全局变量,python,Python,我有以下功能 class calculation() x=3 def calculateOO(y): global x x=3*y calculateOO(2) print(x) 答案是3,而不是6。该函数没有效果 函数有什么问题?缩进正确: x=3 def calculateOO(y): global x x=3*y

我有以下功能

 class calculation()
       
       x=3
    
       def calculateOO(y):
          global x
          x=3*y
     
       calculateOO(2)
            
       print(x)
答案是3,而不是6。该函数没有效果


函数有什么问题?

缩进正确:

x=3
def calculateOO(y):
    global x
    x=3*y

calculateOO(2)
print(x)   # 6

您还可以执行以下操作:

x=3

def calculateOO(y):
    global x
    x=3*y
    return  print((3*y),x)

calculateOO(2)



希望此解决方案对您有所帮助

我认为您对全局变量、返回语句和函数感到困惑。请仔细阅读我的评论:

x=3
def calculateOO(y):
    global x
    x=3*y

def calculateXX(z):
    y=3*z
    return y

print(calculateOO(2))
#prints None, as the function has no return statement
print(x)
#prints 6, as we set x to be global in the calculateOO() function above

print(calculateXX(2))
#prints 6, as we return the value inside the function
print(y)
#causes an error, as we did not set a global y

答案是
6
而不是
3
。您确定缩进是正确的吗?至少在缩进正确的情况下,代码可以按预期工作。您的帖子中当前的缩进完全无效,但您这边的问题似乎也与缩进有关。我们可以帮助你理解发生了什么,如果你想在你的文章中反映代码中的精确缩进,否则,问题就无法重现,问题也无法回答。你的代码在类定义的范围内。看来你还在学习OOP,因为你在那里所做的是。。。不寻常。你真的想知道你的代码是做什么的,还是想知道为什么你的代码不是OOP的核心?简短的解释:当你做
global x
x=3*y
时,你在全局级别上定义了
x
。但是您的
print(x)
不在全局级别,因此它从类定义中访问
x
。我在类中使用它在类外正常工作,但在类内仍然不一样working@TarekMesto这不应该改变任何事情。请张贴您的班级代码以及。