第一次在这里提问,所以请强调我的错误。
我正在研究一些 Leetcode,并在 Python 中遇到了一种行为(与问题无关),我无法完全弄清楚也无法通过谷歌搜索。这特别困难,因为我不确定我是否缺乏理解:
+=或一般变量赋值这是简化的代码:
class Holder:
def __init__(self, val=0):
self.val = val
class Solution:
def runThis(self):
holder = Holder()
self.diveDeeper(holder, 5)
return
def diveDeeper(self, holder, n):
if n==0:
return 1
# 1) Doesn't result in mutation
holder.val += self.diveDeeper(holder, n-1)
# 2) Also doesn't result in mutation
# holder.val = holder.val + self.diveDeeper(holder, n-1)
# 3) !! Results in mutations
# returnVal = self.diveDeeper(holder, n-1)
# holder.val += returnVal
print(holder.val)
return …Run Code Online (Sandbox Code Playgroud)