我想在 python 方法中更改变量(不是局部变量)的值?请检查下面的代码

I want to change the value of a variable(not local variable) inside a python method? Please check the code below

在下面的代码中,我得到了这个。

NameError: name 'digitsum' is not defined

请注意,我们可以 return 值,但这不是我想要的。我只想更改 外部值 内部函数 f.

class Solution:
    def compute(n) -> int:
        digitsum = 0

        def f(k):
            global digitsum
            if k==0:
                return
            digitsum+=k%10
            f(k//10)

        f(3648)
        return digitsum
class Solution:
    digitsum = 0
    def compute(self,n) -> int:
        self.digitsum = 0
        def f(k):
            
            if k==0:
                return
            self.digitsum+=k%10
            f(k//10)

        f(n)
        return self.digitsum
    
    
Solution().compute(45)

在这种情况下 digitsum 不是全局变量,这就是为什么您得到 NameError。在这种特殊情况下,您想要的是 nonlocal.

一个简化的例子:

>>> def foo():
...     x = 0
...     def f():
...         nonlocal x
...         x += 1
...     f()
...     print(x)
... 
>>> foo()
1