当我在函数中使用for循环时(见下文),for循环下面的语句块不会被迭代
def F(rho, m, E, v_rho, v_m, v_E):
for n in xrange(N):
#Update conserved quantities
rho = G(Evolve_rho1(rho))
m = momentum(Evolve_m1(m))
E = Energy(Evolve_E1(E))
v_rho = rho_v(Evolve_rho_v(rho))
v_m = m_v(Evolve_mv(m))
v_E = E_v(Evolve_Ev(E))
return (rho, m, E, v_rho, v_m, v_E)
因为以这种方式调用函数后:density, momentum, Energy, dflux, mflux, Eflux = F(rho, m, E, v_rho, v_m, v_E)
,并且
例如打印密度,会导致错误答案。在
但如果我只使用下面的循环,它工作得很好。在
^{pr2}$等等,给出正确的结果。在
欢迎任何建议。在
函数使用全局变量而不是局部变量,这些变量在F()中的每次迭代中都会更新。解决方案是将变量作为参数传递并定义
感谢大家的贡献。在
我猜你错过了
N
的全局和本地vlue之间的区别。正如您所写的,F
函数中的N
的值将是调用F
时的N,而不是定义它时的N。因此,如果在F
被调用N==0
,那么循环块将永远不会执行。在相关问题 更多 >
编程相关推荐