我想在 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
在下面的代码中,我得到了这个。
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