2017-02-22 10 views
2

I имеют следующую структуру цикла, а также проблема, что это не возможно, чтобы увеличить переменную внутри этого кода из-за UnboundLocalError:Python: реферирование/Присваивание с локальной/глобальной переменной внутри Loop

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) 
Смежные вопросы