2016-07-14 25 views
6

Próbuję dowiedzieć się, jak działa ten kod. W jaki sposób dostępna jest i poza pętlą for?Zliczanie pętli Scoping w języku 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

dla pętli nie ma własnej przestrzeni nazw. [Krótki opis Pythona Scoping Rules] (http://stackoverflow.com/questions/291978/short-description-of-python-scoping-rules) –

+1

'i' jest dostępny, ponieważ zmienne pętli pozostają w bieżącym zakresie wraz z ich ostatnim wartość, chyba że przypisałeś coś do nazwy. –

+2

Dlaczego? W jaki sposób lub do czego to służy? Jest zbyt skomplikowane w tym, co robi. 'mystr == mystr [:: - 1]' – Nicarus

Odpowiedz

1

To jest część Pythona. Zmienne zadeklarowane wewnątrz dla pętli (które obejmują liczniki pętli) nie ulegną zniszczeniu, dopóki nie opuścą w pełni zakresu.

Spójrz na to pytanie:

Scoping In Python For Loops

Z odpowiedzi:

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

Powyższe wypisze (9,2).