2017-02-22 11 views
2
내에서 글로벌/로컬 변수로 참조하는/할당

나는 그것 때문에 UnboundLocalError이 코드의 내부 변수를 증가 할 수없는 것을, 또한 다음과 같은 루프 구조와 문제가 :파이썬 : 루프

while True: 
    def function_1(): 
     def function_2(): 
      x += 1 
      print(x) 
     function_2() 
    function_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)