在python中,后跟.和变量[func.var]的函数意味着什么?

What does a function followed by (dot) then variable [func.var] means in python?

本问题已经有最佳答案,请猛点这里访问。

下面的代码来自geeks,用于计算二进制树中的最大路径和。

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

我在函数内部的sof-if-function.variable上看到了这个问题,它意味着函数是一个对象,但是在这个例子中,函数名和变量都不在原来的函数中。有人能用一个清楚的例子解释一下吗?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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


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

在这种情况下,可能的目的是拥有一些其他语言所称的"静态"变量——一个对函数本身存在全局性的变量,而不是一个单独的调用。

证明即使是一个微不足道的noop函数也可以挂起变量:

1
2
3
4
5
6
def example():
    pass

example.foo ="hello"

print(example.foo) # prints"hello"