2017-09-06 8 views
0

私はPythonが初めてです。 currentNumをせずに(アクセスしotherfuncからcurrentNum変更)私はこれを実現するにはどうすればよいグローバル変数を使用せずに別のスコープから変数を変更しますか?

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 

:グローバル変数を使用

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 

私の実際のコード:

は、どのように私はこのような何かを達成することができますグローバル?

+0

'currentNum'を関数に渡して、関数が' currentNum'の修正バージョンを返そうとしましたか? – araknoid

+0

@araknoidああ、働いて、ありがとう。しかし、それはいくつかの条件に基づいてtrueまたはfalseを返す目的で関数を実行する必要がありますが、 "currentNum"をインクリメントする必要がありますか? –

答えて

1

currentNumにアクセスする場合は、otherfuncにその機能に渡す必要があります。 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

関連する問題