2017-09-06 71 views
0

我是Python新手。從另一個範圍更改變量而不使用全局?

我怎麼能做到這樣的事:

def gameon(): 
    currentNum = 0 
    for x in range(100): 
    currentNum+=1 
    otherfunc() 

def otherfunc(maybe a possible parameter...): 
    for y in range(500): 
    #check for some condition is true and if it is... 
    #currentNumFROMgameon+=1 

我所使用全局變量的實際代碼:

def gameon(): 
    global currentNum 
    currentNum = 0 
    for x in range(100): 
    currentNum+=1 
    otherfunc() 

def otherfunc(): 
    global currentNum 
    for y in range(500): 
    if(...): 
     currentNum+=1 
global currentNum 

我怎樣才能做到這一點(訪問和來自otherfunc改變currentNum)未做currentNum全球?

+0

您是否曾嘗試將'currentNum'傳遞給該函數並讓該函數返回'currentNum'的修改版本? – araknoid

+0

@araknoid啊,工作,謝謝。但是,如果它應該通過一個基於某些條件返回true或false的函數,但它也必須增加「currentNum」? –

回答

1

如果你想訪問currentNumotherfunc你應該把它傳遞給該函數。如果你想otherfunc來改變它,只需讓它返回一個更新的版本。試試這個代碼:

def gameon(): 
    currentNum = 0 
    for x in range(100): 
    currentNum+=1 
    currentNum = otherfunc(currentNum) 

def otherfunc(currentNumFROMgameon): 
    for y in range(500): 
    if True: # check your condition here, right now it's always true 
     currentNumFROMgameon+=1 
    return currentNumFROMgameon 
+0

謝謝!但是,如果它應該通過一個基於某些條件返回true或false的函數,但它也必須增加「currentNum」? –

+0

@overso您可以編寫一個單獨的函數,返回True或False。該函數將不得不接收它需要的任何輸入變量。雖然通常如果這樣的檢查足夠簡單,只要在if語句中檢查它就容易了,而不是爲它編寫單獨的函數。 – Swier