αλλά όλες οι ακόλουθες κλήσεις θα είναι άκυρες:
parrot()
# required argument missing
parrot(voltage
=
5.0
,
'dead'
)
# non-keyword argument after a
keyword argument
parrot(
110
, voltage
=
220
)
# duplicate value for the same
argument
parrot(actor
=
'John Cleese'
)
# unknown keyword argument
Σε μια κλήση συνάρτησης, η keyword arguments πρέπει
να ακολουθεί τα ορίσματα θέσης. Όλα τα ορίσματα με λέξεις
κλειδιά που περνούν πρέπει να ταιριάζουν με ένα από τα
ορίσματα που έγιναν δεκτά στην συνάρτηση λειτουργία (π.χ. o
actor δεν αποτελεί βάσιμο επιχείρημα για τη συνάρτηση
parrot), ενώ η σειρά τους δεν είναι σημαντική. Αυτό
περιλαμβάνει επίσης μη-προαιρετικά ορίσματα (π.χ.
parrot(voltage = 1000)). Κανένα όρισμα δεν μπορεί να λάβει
μια τιμή πάνω από μία φορά. Εδώ είναι ένα παράδειγμα που
αποτυγχάνει εξαιτίας αυτού του περιορισμού:
>>>
def
function
(a):
...
pass
...
>>>
function(
0
, a
=
0
)
Traceback (most recent call last):
File
"<stdin>"
, line
1
, in ?
TypeError
: function() got multiple values for keyword
argument 'a'
Όταν μια τελική τυπική παράμετρος της μορφής **name
είναι παρούσα, λαμβάνει ένα λεξικό που περιέχει όλα τα
ορίσματα, εκτός από εκείνα που αντιστοιχούν στην τυπική
παράμετρο. Αυτό μπορεί να συνδυαστεί με μια τυπική παράμετρο
της μορφής *name, η οποία δέχεται μια πλειάδα που περιέχει
τα ορίσματα θέσης πέρα από την επίσημη λίστα παραμέτρων.
(*name πρέπει να συμβεί πριν το **name). Για παράδειγμα, αν
ορίσουμε μια συνάρτηση όπως αυτή:
def
cheeseshop
(kind,
*
arguments,
**
keywords):
(
"-- Do you have any"
, kind,
"?"
)
- A Mini greek notebook for Learning Python Programming
27