函数(后跟(点)然后变量[func.var]在python中是什么意思?

时间:2018-12-31 18:17:21

标签: python python-3.x

以下来自Geeks for Geeks的代码用于计算二叉树中的最大路径总和。

在函数findMaxSum()中,他们将变量声明为findMaxUtil.res是什么意思?

我看到this question on SOF如果function.variable在函数内部,则表示该函数是一个对象。但是在此示例中,函数名称和变量不在原始函数之内。有人可以用一个清晰​​的例子来说明这一点!

class Node: 
    def __init__(self, data): 
        self.data = data 
        self.left = None
        self.right = None

def findMaxUtil(root): 
    if root is None: 
        return 0 

    l = findMaxUtil(root.left) 
    r = findMaxUtil(root.right) 

    max_single = max(max(l, r) + root.data, root.data) 
    max_top = max(max_single, l+r+ root.data) 
    findMaxUtil.res = max(findMaxUtil.res, max_top)  

    return max_single 

def findMaxSum(root): 

    findMaxUtil.res = float("-inf")  ## This line
    findMaxUtil(root) 
    return findMaxUtil.res           ## and this line

1 个答案:

答案 0 :(得分:5)

函数是对象。它们可以具有与其他任何对象一样的属性。没有特殊的语法级别含义。

在这种情况下,可能的目的是让其他语言将其称为“静态”变量-该变量对函数本身是全局的,而不是对单个调用的作用域。


证明即使是琐碎的noop函数也可以挂上变量:

def example():
    pass

example.foo = "hello"

print(example.foo) # prints "hello"