You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
def f(a, L=None):<br />
if L is None:<br />
L = []<br />
L.append(a)<br />
return L<br />
4.7.2 Argumente de tip cuvinte cheie<br />
Funcţiile pot fi apelate folosind în loc de argumente cuvinte cheie de forma: cuvant_cheie = valoare.<br />
Pentru exemplificare observaţi funcţia:<br />
def parrot(voltage, state=’mort’, action=’zboara’, type=’Norvegian Blue’):<br />
print "-- Acest papagal nu", action<br />
print "daca pui", voltage, "volti prin el."<br />
print "-- Doamne !", type<br />
print "-- E ", state, "!"<br />
care poate fi apelată în mai multe moduri:<br />
parrot(1000)<br />
parrot(action=’BOOM’, voltage=10000)<br />
parrot(’o mie’, state=’apasa iarba’)<br />
parrot(’un milion’, ’fara viata’, ’sare’)<br />
Dar următoarele apeluri ar genera erori:<br />
parrot() # Lipseste argumentul obligatoriu voltage<br />
parrot(voltage=5.0, ’mort’) # Dupa cuvantul cheie trebuie sa urmeze<br />
un argument tip cheie<br />
parrot(110, voltage=220) # Doua valori atribuite aceleiasi varibile<br />
parrot(actor=’John Cleese’) # Cuvant cheie necunoscut<br />
În general o listă de argumente trebuie să aibe oricâte argumente poziţionale, urmate de oricâte argumente de<br />
tip cuvinte cheie, unde cuvintele cheie trebuie alese din lista parametrilor formali. Nu este important dacă un<br />
parametru formal are o valoare implicită sau nu. Nici un argument nu poate primi o valoare de mai multe ori -<br />
numele de parametrii formali corespunzătoare argumentelor poziţionale nu pot fi folosite drept cuvinte cheie în<br />
cadrul aceluiaşi apel. Iată un exemplu cu erori datorate acestei reguli:<br />
>>> def function(a):<br />
... pass<br />
...<br />
>>> function(0, a=0)<br />
Traceback (most recent call last):<br />
File "", line 1, in <br />
TypeError: keyword parameter redefined<br />
Atunci când unul dintre parametrii este de forma **nume, funcţia va primi o listă care va conţine parametrii de<br />
tip cuvânt cheie. Dacă se foloseşte un parametru de tipul *nume, funcţia va primi o listă conţinând argumentele<br />
suplimentare în afara celor formale. Dacă sunt folosiţi împreună parametrul *nume trebuie să se afle înaintea celui<br />
de tip **nume. Totul poate părea ambiguu dar veţi fi lămuriţi imediat:<br />
24 Capitolul 4. Structuri de control