2016-08-25 10 views
0

関数内で変数を定義し、それを元の関数内の関数で使用する必要があります。例えば、関数内で定義された変数 - Python

def go_to_next_function(): 
    globvar = 0 
    def add_one_to_globvar(): 
     global globvar 
     for i in range(10): 
      globvar += 1 
      print(globvar) 
    add_one_to_globvar() 
go_to_next_function() 

は今、私はglobvarは、すべての機能の外で定義されている場合、それは動作します知っているが、私はそれがgo_to_next_function()関数内で定義されたいです。何か案は?ありがとう。

+1

python2またはpython3? python3では 'nonlocal'を使うことができます。 –

+0

Python 3にあります。 –

答えて

1

python3.xを使用している場合は、globalではなくnonlocalキーワードを使用することができ、関数が機能するはずです。

もしあなたがpython2.xを使っているのであれば、コンテナに値を入れてという文字列をに変更するといった古いハックに悩まされています。これは醜いハックです(その理由は、nonlocalが最初に追加された理由です)。

def go_to_next_function(): 
    closure_var = [0] 
    def add_one(): 
     closure_var[0] += 1 
     print closure_var[0] 
    add_one() 
go_to_next_function() 
+0

ありがとうございます。私はPython 3を使用しています –

関連する問題