Python 更新已记忆的全局变量
在这里,我试图访问从主提示符声明为全局的res,但当我说print res时,它只显示旧字典,即使在调用fib函数后也没有显示任何更新的值。我在windows cmd上运行此命令,当我说old dictionary时,我指的是以0和1作为键的res。如果要在函数中为其赋值,只需将变量声明为Python 更新已记忆的全局变量,python,fibonacci,Python,Fibonacci,在这里,我试图访问从主提示符声明为全局的res,但当我说print res时,它只显示旧字典,即使在调用fib函数后也没有显示任何更新的值。我在windows cmd上运行此命令,当我说old dictionary时,我指的是以0和1作为键的res。如果要在函数中为其赋值,只需将变量声明为global。修改它(通过订阅它)非常好。这对我来说很好(打印的最后一行是{0:0,1:1,2:1,3:2,4:3,5:5,6:8,7:13,8:21,9:34,10:55})。您得到了什么输出?正如@ecat
global
。修改它(通过订阅它)非常好。这对我来说很好(打印的最后一行是{0:0,1:1,2:1,3:2,4:3,5:5,6:8,7:13,8:21,9:34,10:55}
)。您得到了什么输出?正如@ecatmur所说,您不需要global res
语句,它可以被删除(在函数外部使用global
是没有意义的)。我可以确认它对我的效果也和预期的一样。
global res
res = dict()
res[0] = 0
res[1] =1
def fib(n):
if n in res:
return res[n]
else: value = fib(n-1) + fib (n-2)
res[n] = value
print res
return value
if __name__ == '__main__':
print fib(10)