Συνδυασμός παραμέτρων στην Python
Στην ίδια συνάρτηση μπορούν ταυτόχρονα
να μεταβιβαστούν ονομασμένες και θεσιακές παράμετροι.
Αυτό γίνεται με τη βοήθεια του συμβόλου *,
το οποίο δηλώνει ότι οι παράμετροι που καθορίζονται
στα δεξιά του πρέπει να θεωρούνται ονομασμένες,
αν οι προεπιλεγμένες τους τιμές δεν χρειάζεται
να χρησιμοποιηθούν.
Ας δημιουργήσουμε μια συνάρτηση που θα
εκτυπώνει όλες τις παραμέτρους στην κονσόλα. Η μεταβλητή
data θα δηλώνει μια κανονική
θεσιακή παράμετρο. Στη συνέχεια, μετά το σύμβολο
* ορίζονται δύο μεταβλητές start
και end με προεπιλεγμένες τιμές.
Ωστόσο, κατά την κλήση της συνάρτησης, θα κάνουμε αυτές
τις μεταβλητές ονομασμένες:
def func(data, *, start=0, end=100):
print(data, start, end)
func(1, start=2, end=3)
Αποτέλεσμα εκτέλεσης κώδικα:
1 2 3
Εάν αφαιρέσουμε την προεπιλεγμένη τιμή της μεταβλητής
start και ταυτόχρονα την αφαιρέσουμε ως
ονομασμένη παράμετρο, θα εμφανιστεί σφάλμα.
Αυτό συμβαίνει επειδή το σύμβολο *
έχει ήδη ορίσει το start ως ονομασμένη
μεταβλητή:
def func(data, *, start, end=100):
print(data, start, end)
func(1, 2, end=3) # θα εμφανίσει σφάλμα
Ποιο θα είναι το αποτέλεσμα της εκτέλεσης του ακόλουθου κώδικα:
def func(num1, num2, *, num3):
return (num1 + num2) * num3
print(func(2, 4, num3=3))
Ποιο θα είναι το αποτέλεσμα της εκτέλεσης του ακόλουθου κώδικα:
def func(num1, *, num2, num3):
return (num1 - num2) / num3
print(func(12, 4, num3=5))
Ποιο θα είναι το αποτέλεσμα της εκτέλεσης του ακόλουθου κώδικα:
def func(*, name='user1', age='18'):
return 'Username is ' + name + ' age is ' + age
print(func(name='john'))