由于某些原因,此代码中的x没有在递归内更新。当我在a(y)中调用b(c)时,x不应该更新吗?当x在b(c)中更新但没有返回到
global nested
def extract(nested,depth):
y = depth[0]
depth = depth[1:]
extract = nested[y]
newlist(extract)
return depth
def newlist(x):
nested = x
return nested
def recursiveRef(nested,depth):
"""Return element from nested list
list ->int
"""
if len(depth) == 0:
return nested
else:
return recursiveRef(nested,extract(nested,depth))
这就是你想做的吗?在
输出
^{pr2}$我不是
Python
大师,但我认为问题是x
是递归函数的局部函数。您正在更改您的b(c)
中的另一个全局x
。如果我错了,请纠正我。在你的代码看起来可疑。当你认为你需要一个全局变量时,通常你需要一个类。考虑在类中包装函数,并使用self.x而不是x
也就是说,“全球”不应该写在你的程序顶部。相反,在修改全局变量的每个函数中都需要它,而不是只读取它的函数。在
相关问题 更多 >
编程相关推荐