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' не является локальным для каждой области видимости цикла?