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:
- A Mini greek notebook for Learning Python Programming
29