28.01.2015 Views

Tutorial Python - Starship

Tutorial Python - Starship

Tutorial Python - Starship

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

for element in [1, 2, 3]:<br />

print element<br />

for element in (1, 2, 3):<br />

print element<br />

for key in {’one’:1, ’two’:2}:<br />

print key<br />

for char in "123":<br />

print char<br />

for line in open("myfile.txt"):<br />

print line<br />

Acest mod de accesare este clar,concis şi comod. Folosirea iteratorilor este larg raspândită în proiectarea <strong>Python</strong>ului.<br />

Prin modul său de implementare instructiunea for apelează iter() pentru obiectul container. Funcţia<br />

returnează un obiect iterator care defineşte metoda next() prin care se accesează doar o singură dată fiecare<br />

element al containerului. Când toate elementele au fost epuizate, next() setează excepţia StopIteration,<br />

care comunică buclei for să se oprească. Modul de funcţionare este ilustrat de următorul exemplu :<br />

>>> s = ’abc’<br />

>>> it = iter(s)<br />

>>> it<br />

<br />

>>> it.next()<br />

’a’<br />

>>> it.next()<br />

’b’<br />

>>> it.next()<br />

’c’<br />

>>> it.next()<br />

Traceback (most recent call last):<br />

File "", line 1, in -toplevelit.next()<br />

StopIteration<br />

S–a văzut mecanismul din spatele procesului de iterare.Este uşor de a implementa un comportament iterarativ<br />

claselor proiectate de către utilizator. Se defineşte o metodă __iter__(). Această metodă returnează un obiect<br />

ce va avea o metodă next(). Dacă clasa defineşte next(), atunci __iter__() va returna doar self :<br />

class Reverse:<br />

"Iterator for looping over a sequence backwards"<br />

def __init__(self, data):<br />

self.data = data<br />

self.index = len(data)<br />

def __iter__(self):<br />

return self<br />

def next(self):<br />

if self.index == 0:<br />

raise StopIteration<br />

self.index = self.index - 1<br />

return self.data[self.index]<br />

>>> for char in Reverse(’spam’):<br />

... print char<br />

...<br />

m<br />

a<br />

p<br />

s<br />

66 Capitolul 9. Clase

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!