在蟒蛇

在蟒蛇

问题描述:

我使用pyhton到名为递归函数的递归函数全局变量sphereinput的函数需要返回一个变量名结果作为output.By宣布它作为递归函数我西港岛线没有全球在函数结束处使用return。 将函数返回结果具有正确的答案在我的程序的主文件调用时。 我的保留意见是,每次调用自身的功能sphereinput全局变量结果将进行相应的更新,对不对?在蟒蛇

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

请注意,我没有使用return语句here.Do我有什么打算? 此外,当我在相同的文件作为主要代码中定义它的每一个调用之后起作用它开始执行以下功能的代码行再次它们的主代码的一部分,必须不被执行。

如果我在其他文件中定义这个功能我如何把它从主文件,然后哪些变量将同时拥有在主函数代码文件中定义的全局?

+0

从全局变量的祸害保存自己,只是返回。这很容易,而且出错的可能性也较小。 – zondo

+1

同意@zondo。而且,你不能立即推断代码的作用并不是一件好事。递归函数通常应该是无副作用的,也就是说它们不会影响本地范围以外的任何东西。 –

+0

如果我只是返回变量,即使涉及递归,它是否会给出正确答案? –

结果将进行相应的更新,但不会返回,除非你明确地这样做。

我不知道你

的意思还当我在同一个文件中主要的代码定义它每次调用 功能后,它开始再次执行以下功能的代码行 是主要部分代码,不得执行。

从主文件中调用它,你必须先导入模块(=文件),然后调用它的功能:只要

import myfile 
myfile.sphereinput(args) 

您不必定义结果变量其他地方您在调用sphereinput之前确保不使用它。

可以以另一种方式递归调用你的函数,以及,这并不需要一个全局变量:

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

在这里,你只需返回None,当你不希望任何进一步的递归。

+0

感谢您的帮助。如果这不起作用,请详细说明问题! –