Julia在执行函数或其每一行时不返回相同的值

Julia在执行函数或其每一行时不返回相同的值,julia,juno-ide,Julia,Juno Ide,我是一个非常新的Julia用户(来自Matlab),所以请原谅我问了一个非常愚蠢的问题 我目前有一个julia代码,它可以工作(运行良好),但如果我将其作为函数执行,或者以交互方式运行每个函数行,它会提供不同的结果。 我的脚本主要是关于线性代数的,使用数组和dict 由于我在使用Juno调试器时遇到了一些问题,所以我没有找到另一种调试代码的方法,这真是太遗憾了 我在这上面花了三个小时,我仍然不知道为什么这些结果不同。 我怀疑我不了解julia关于变量分配的一些非常基本的工作过程,但我在这里是盲目

我是一个非常新的Julia用户(来自Matlab),所以请原谅我问了一个非常愚蠢的问题

我目前有一个julia代码,它可以工作(运行良好),但如果我将其作为函数执行,或者以交互方式运行每个函数行,它会提供不同的结果。 我的脚本主要是关于线性代数的,使用数组和dict

由于我在使用Juno调试器时遇到了一些问题,所以我没有找到另一种调试代码的方法,这真是太遗憾了

我在这上面花了三个小时,我仍然不知道为什么这些结果不同。 我怀疑我不了解julia关于变量分配的一些非常基本的工作过程,但我在这里是盲目的

有人对这种行为有什么解释吗

我不能在这里提供代码,但这里是代码的基本结构。基本上,
childfunction
返回的
M
矩阵是错误的
a
是一个标量a
dict
是一个字典

  • 调用函数
  • 子函数

最有可能的情况是,在函数外部运行时,某些全局变量会改变行为。您在问题中使用代码的方式是正确的。@PrzemyslawSzufel您能解释一下您所说的更改行为是什么意思吗?您说过“如果我将其作为函数执行,或者如果我以交互方式运行每个函数行,则会提供不同的结果”。也许您可以在控制台中逐行运行代码。问题在于,变量作用域在控制台和函数中具有不同的规则。请阅读我不能说更多的,因为你需要添加一些简单的说明性例子到你的文章question@PrzemyslawSzufel,我在julia中读到了一些关于变量作用域的内容,与matlab相比,我感到非常惊讶。我不使用任何全局变量,如果这有什么区别的话。我会尽快提供MWE。我想知道是否更新了新的函数定义,是否有办法确保重新编译函数代码,还是在每次修改函数文件后执行?这也许可以解释为什么我在函数和脚本模式之间有不同的结果,不是吗?在你的例子中,另一个非常有用的阅读:你可能确实有两个函数定义(我不知道没有MWE你实际做了什么)
function motherfunction(...)
    M = childfunction(a,dict)
end
function childfunction(...)
...
    M = *some linear algebra*
return M
end