簡體   English   中英

python中遞歸函數的全局變量

[英]global variable for recursive functions in python

我正在將pyhton用於名為sphereinput的遞歸函數,該函數需要返回變量名稱結果作為輸出。通過在遞歸函數中將其聲明為全局變量,我將不必在函數末尾使用return。 在我程序的主文件中調用該函數時,返回的結果是否具有正確的答案。 我的保留意見是,對於每次對sphereinput函數本身的調用,全局變量結果都會相應地更新,對嗎?

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

請注意,我這里沒有使用return語句,必須這樣做嗎? 同樣,當我在每次調用函數后在與主代碼相同的文件中定義它時,它將再次開始執行函數下面的代碼行,這些代碼行是主代碼的一部分,不能執行。

如果必須在另一個文件中定義此函數,該如何從主文件中調用它,然后必須在全局和函數代碼文件中全局定義哪些變量?

結果將相應更新,但除非您明確進行更新,否則不會返回。

我不知道你的意思

同樣,當我在每次調用函數后在與主代碼相同的文件中定義它時,它將再次開始執行函數下面的代碼行,這些代碼行是主代碼的一部分,不能執行。

要從主文件中調用它,您必須首先導入模塊(= file),然后調用其函數:

import myfile
myfile.sphereinput(args)

您不必在其他任何地方定義結果變量,只要確保在調用sphereinput之前不使用它即可。

您也可以用另一種方式遞歸調用函數,該方法不需要全局變量:

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

在這里,當您不希望進一步遞歸時,只需返回None即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM