2017-02-22 3 views
2

I ont la structure de boucle suivante et aussi le problème, qu'il ne soit pas possible d'incrémenter une variable à l'intérieur de ce code en raison de UnboundLocalError:Python: Referencing/Affectation avec Variable locale/globale au sein de la boucle

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

ma solution était maintenant celle-ci:

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

y at-il une autre solution sans global?

Répondre

1

utilisez une valeur mutable.

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

Merci beaucoup! Je vais tester lequel est le plus rapide. – saitam

1

Passez et renvoyez x à toutes les fonctions.

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)