python中递归函数的全局变量

时间:2017-04-03 18:08:53

标签: python recursion global-variables global

我使用pyhton作为名为 sphereinput 的递归函数,函数需要返回一个变量名 result 作为输出。在递归函数中声明它是全局的我会不必在函数结束时使用return。 在我的程序的主文件中调用时,函数是否会返回结果具有正确的答案。 我的保留是,对于函数 sphereinput 的每次调用,全局变量结果都会相应更新,对吗?

def sphereinput(parameters)
    global result
    Recursive call to sphereinput
    result=assigned value

请注意,我在这里没有使用return语句。我必须这样做吗? 此外,当我在每次调用函数后将其定义在与主代码相同的文件中时,它再次开始执行函数下面的代码行,这是主代码的一部分,不能执行。

如果我必须在另一个文件中定义此函数,我如何从主文件中调用它,然后必须在主函数和函数代码文件中定义哪些变量全局?

1 个答案:

答案 0 :(得分:0)

结果将相应更新,但除非您明确这样做,否则不会返回。

我不知道你的意思

  

当我在每次调用后在同一个文件中将其定义为主代码时   函数它再次开始执行函数下面的代码行   是主要代码的一部分,不得执行。

要从主文件中调用它,您必须首先导入模块(= file),然后调用它的函数:

import myfile
myfile.sphereinput(args)

只要在调用sphereinput之前确保不使用结果变量,就不必在其他地方定义结果变量。

您也可以通过其他方式递归调用函数,这不需要全局变量:

while True:
  temp = sphereinput(args)
  if temp is None:
    break
  result = temp

如果您不想再进行任何递归,只需返回None。