2017-07-02 70 views
0

假設我有以下:函數具有用於循環依賴性

def f(t): 
    return a*t 

def g(t): 
    a=5 
    b=4 
    for u in range(t): 
     a=a+u 
     b=f(t)+b 
    return b 

在每一步,將在「for」循環更新b中的F(T)具有在其定義的更新,或將它永遠是5?

+1

正如現在寫的'a'在函數f中是未知的。 – Matthias

+0

這是一個錯誤,如果你在'def g()'裏面移動了'def f(t)',那麼你將在'g()'上創建一個閉包,並且它會得到更新的'a'也不需要通過't'。 – AChampion

回答

2

對於f(t)定義的更新值爲a,它應該作爲參數傳遞給該函數。 如果你需要爲tf(t)每個值已經更新a在做這樣的事情:

def f(t,a): 
    return a*t 

也在你的f(t)a認定中是不確定
然後在g(t)修改f(t)f(t,a)

def g(t): 
    a=5 
    b=4 
    for u in range(t): 
     a=a+u 
     b=f(t,a)+b 
    return b