Python 3 Можно ли ссылаться на переменную вне цикла внутри нее (без глобального)? - PullRequest
0 голосов
/ 24 мая 2018
def test():
    i = 0
    for e in range(5):
        i=+1
        print('i in for loop {}'.format(i))
        while True:
            print ('i in while {}'.format(i))
            break
test()

Пробовал словарь:

def test():
    ns = {}
    ns['i'] = 0
    for e in range(5):
        ns['i']=+1
        print('i in for loop {}'.format(ns['i']))
        while True:
            print ('i in while {}'.format(ns['i']))
            break
test()

И определение пустого класса:

class Namespace:pass
def test():
    ns = Namespace()
    ns.i = 0
    for e in range(5):
        ns.i =+1
        print('i in for loop {}'.format(ns.i))
        while True:
            print ('i in while {}'.format(ns,i))
            break
test()

Получил этот вывод:

i in for loop 1
i in while 1
i in for loop 1
i in while 1
i in for loop 1
i in while 1
i in for loop 1
i in while 1
i in for loop 1
i in while 1

требуемый:

i in for loop 1
i in while 1
i in for loop 2
i in while 2
i in for loop 3
i in while 3
i in for loop 4
i in while 4
i in for loop 5
i in while 5

Есть ли обходные пути, не прибегая к global, поэтому упомянутое 'i' не является локальным для каждой области видимости цикла?

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

Я думаю, что в вашем коде вы хотели написать +=, но написали =+, что эквивалентно =.

0 голосов
/ 24 мая 2018

Просто измените i = + 1 на i + = 1, и все готово:)

...