2017-02-22 9 views
2

内のローカル/グローバル変数との参照/代入私は原因UnboundLocalErrorにこのコードの内部で変数をインクリメントすることは不可能であることを、以下のループ構造とも問題を抱えている:Pythonの:ループ

while True: 
    def function_1(): 
     def function_2(): 
      x += 1 
      print(x) 
     function_2() 
    function_1() 

私のソリューションは、今、この1だった:

x = 0 
while True: 
    def function_1(): 
     def function_2(): 
      global x 
      x += 1 
      print(x) 
     function_2() 
    function_1() 

globalのない別の解決策はありますか?

答えて

1

は可変値を使用します。

x = [] 
x.append(0) 
while True: 
    def function_1(): 
     def function_2(): 
      x[0]= x[0]+1 
      print x[0] 
     function_2() 
    function_1() 
+0

ありがとうございます!私はどちらが速いかをテストします。 – saitam

1

xをすべての関数に渡して返します。

x = 0 
while True: 
    def function_1(x1): 
     def function_2(x2): 
      x2 += 1 
      print(x2) 
      return x2 
     return function_2(x1) 
    x = function_1(x)