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