2016-07-14 4 views
6

Я пытаюсь выяснить, как работает этот код. Как i доступен вне цикла for?Loop Counting Scoping В Python

# Palindrome of string 
str=raw_input("Enter the string\n") 
ln=len(str) 
for i in range(ln/2) : 
    if(str[ln-i-1]!=str[i]): 
     break 
if(i==(ln/2)-1):   ## How is i accessible outside the for loop ? 
    print "Palindrome" 
else: 
    print "Not Palindrome" 
+3

для петель не имеют собственного пространства имен. [Краткое описание правил масштабирования Python] (http://stackoverflow.com/questions/291978/short-description-of-python-scoping-rules) –

+1

'i' доступно, поскольку переменные цикла остаются в текущей области с их последними значение, если вы не назначили другое имя. –

+2

Почему? Как и для чего вы это реализуете? Это слишком сложно для того, что он делает. 'mystr == mystr [:: - 1]' – Nicarus

ответ

1

Это часть Python. Переменные, объявленные внутри циклов (включая счетчики циклов), не будут распадаться, пока они полностью не покинут область.

Взгляните на этот вопрос:

Scoping In Python For Loops

Из ответов:

for foo in xrange(10): 
    bar = 2 
print(foo, bar) 

выше напечатает (9,2).