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.

4.7 Mai multe despre definirea funcţiilor<br />

Este posibil în <strong>Python</strong> să definim funcţii cu un număr variabil de argumente. Există trei modalitaţi de a realiza<br />

acest lucru, care pot fi combinate.<br />

4.7.1 Valori implicite pentru argumente<br />

Cea mai utilă metodă este să specificaţi valori implicite pentru argumente. În acest fel creaţi o funcţie care poate<br />

fi apelată cu mai puţine argumente decât a fost definită:<br />

def ask_ok(prompt, retries=4, complaint=’Da sau nu va rog!’):<br />

while 1:<br />

ok = raw_input(prompt)<br />

if ok in {’d’, ’da’): return 1<br />

if ok in {’n’, ’nu’): return 0<br />

retries = retries - 1<br />

if retries < 0: raise IOError, ’refusenik user’<br />

print complaint<br />

Funcţia definită mai sus poate fi apelată în două moduri:<br />

ask_ok(’Sunteţi sigur că doriţi să ieşiţi ’) sau: ask_ok(’Doriţi să ştergeţi<br />

fişierul ’, 2)<br />

Valorile implicite sunt evaluate în timpul interpretării definiţiei funcţiei, deci următoarea secvenţă<br />

i = 5<br />

def f(arg=i):<br />

print arg<br />

i = 6<br />

f()<br />

va afişa 5.<br />

ATENŢIE!!!: Valorile implicite sunt evaluate o singură dată. Aveţi grijă atunci când valoarea implicită este<br />

un obiect modificabil, cum este lista, dicţionarul, sau instanţierea unei clase. De exemplu funcţia următoare<br />

acumulează într-o listă argumentele ce îi sunt transmise în timpul unor apeluri consecutive:<br />

def f(a, L=[]):<br />

L.append(a)<br />

return L<br />

print f(1)<br />

print f(2)<br />

print f(3)<br />

va afişa<br />

[1]<br />

[1, 2]<br />

[1, 2, 3]<br />

Dacă nu doriţi ca valoarea implicită să fie reţinută după terminarea funcţiei, puteţi proceda ca în exemplul următor:<br />

4.7. Mai multe despre definirea funcţiilor 23

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

Saved successfully!

Ooh no, something went wrong!