background image

def

 

write_multiple_items

(file, separator, 

*

args):

    file

.

write(separator

.

join(args))

Κανονικά,   αυτά   τα   variadic   ορίσματα   θα   είναι   τα 

τελευταία   στη   λίστα   από   τυπικών   παραμέτρων,   επειδή 
μαζεύονται   όλα   τα   υπόλοιπα   επιχειρήματα   των   εισροών   που 
διαβιβάστηκαν   στη   συνάρτηση.   Τυχόν   τυπικές   παράμετροι   που 
επέρχονται   μετά   την   παράμετρο   *args   είναι   μόνο   λέξεις- 
κλειδιά, πράγμα που σημαίνει ότι μπορεί να χρησιμοποιηθούν 
μόνο ως τέτοια και όχι ως ορίσματα θέσης.

>>> 

def

 

concat

(

*

args, sep

=

"/"

):

... 

   

return

 sep

.

join(args)

...
>>> 

concat(

"earth"

"mars"

"venus"

)

'earth/mars/venus'

>>> 

concat(

"earth"

"mars"

"venus"

, sep

=

"."

)

'earth.mars.venus'

Η   αντίστροφη   κατάσταση   εμφανίζεται   όταν   τα   ορίσματα 

είναι   ήδη   σε   μια   λίστα   ή   μια   πλειάδα,   αλλά   πρέπει   να 
αποσυμπιεστούν   για   την   κλήση   μιας   συνάρτησης   που   απαιτεί 
διαφορετικά   επιχειρήματα   θέσης.   Για   παράδειγμα,   η 
ενσωματωμένη   λειτουργία   τοy  range()   αναμένει   ξεχωριστά 
ορίσματα   έναρξης   και   διακοπής.   Εάν   δεν   είναι   διαθέσιμα 
ξεχωριστά, γράψτε την κλήση της συνάρτησης με το *-operator 
με σκοπό να ανοίξει τα ορίσματα από μια λίστα ή μια πλειάδα:

>>> 

list

(

range

(

3

6

))            

# normal call with separate 

arguments

[3, 4, 5]

>>> 

args 

=

 [

3

6

]

>>> 

list

(

range

(

*

args))            

# call with arguments 

unpacked from a list

[3, 4, 5]

Κατά τον ίδιο τρόπο, τα λεξικά μπορούν να προσφέρουν 

keyword arguments με την **-operator:

http://arch.icte.uowm.gr

 - A Mini greek notebook for Learning Python Programming 

29