background image

αλλά όλες οι ακόλουθες κλήσεις θα είναι άκυρες:

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):

    

print

(

"-- Do you have any"

, kind, 

"?"

)

http://arch.icte.uowm.gr

 - A Mini greek notebook for Learning Python Programming 

27