从python函数内部访问全局变量

2024-04-18 22:49:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从calc函数内部更新变量1或2,然后在rob函数中打印它。但每当我这么做的时候,它就会回复到零,这会引起问题

使用了前面提到的global关键字Using global variables in a functioncan't access global variable from inside a function in python,但似乎不起作用

class Solution(object):
    one=0
    two= 0
    def calc(self,root,flag):
        global one
        global two
        if root == None:
            return
        if flag:
            self.one+=root.val
            Solution().calc(root.left,False)
            Solution().calc(root.right, False)
        else :
            self.two+=root.val
            Solution().calc(root.left, True)
            Solution().calc(root.right, True)
        print (str(root.val)+" " + str(self.one) + " " + str(self.two))
    def rob(self, root):
        self.calc(root,True)
        global one
        global two        
        print self.one
        print self.two
        return max(self.one,self.two)

基本上是​ 总是把一和二归零


Tags: 函数inselftruecalcfunctionvalroot
1条回答
网友
1楼 · 发布于 2024-04-18 22:49:57

如果没有root的定义和给出错误答案的代码调用示例,就很难回答您的问题。也就是说,我认为问题是您将root.val变为Solution属性,而不是增加globals:

# You have:
self.one += root.val
# You want:
one += root.val

相关问题 更多 >