以下来自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
答案 0 :(得分:5)
函数是对象。它们可以具有与其他任何对象一样的属性。没有特殊的语法级别含义。
在这种情况下,可能的目的是让其他语言将其称为“静态”变量-该变量对函数本身是全局的,而不是对单个调用的作用域。
证明即使是琐碎的noop函数也可以挂上变量:
def example():
pass
example.foo = "hello"
print(example.foo) # prints "hello"