Συνδυασμός παραμέτρων στην Python

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

Ας δημιουργήσουμε μια συνάρτηση που θα εκτυπώνει όλες τις παραμέτρους στην κονσόλα. Η μεταβλητή data θα δηλώνει μια κανονική θεσιακή παράμετρο. Στη συνέχεια, μετά το σύμβολο * ορίζονται δύο μεταβλητές start και end με προεπιλεγμένες τιμές. Ωστόσο, κατά την κλήση της συνάρτησης, θα κάνουμε αυτές τις μεταβλητές ονομασμένες:

pythondef func(data, *, start=0, end=100):
  print(data, start, end)
  
func(1, start=2, end=3)

Αποτέλεσμα εκτέλεσης κώδικα:

python1 2 3

Εάν αφαιρέσουμε την προεπιλεγμένη τιμή της μεταβλητής start και ταυτόχρονα την αφαιρέσουμε ως ονομασμένη παράμετρο, θα εμφανιστεί σφάλμα. Αυτό συμβαίνει επειδή το σύμβολο * έχει ήδη ορίσει το start ως ονομασμένη μεταβλητή:

pythondef func(data, *, start, end=100):
  print(data, start, end)
  
func(1, 2, end=3) # θα εμφανίσει σφάλμα
Задание 1

Ποιο θα είναι το αποτέλεσμα της εκτέλεσης του ακόλουθου κώδικα:

pythondef func(num1, num2, *, num3):
  return (num1 + num2) * num3
  
print(func(2, 4, num3=3))
Задание 2

Ποιο θα είναι το αποτέλεσμα της εκτέλεσης του ακόλουθου κώδικα:

pythondef func(num1, *, num2, num3):
  return (num1 - num2) / num3
  
print(func(12, 4, num3=5))
Задание 3

Ποιο θα είναι το αποτέλεσμα της εκτέλεσης του ακόλουθου κώδικα:

pythondef func(*, name='user1', age='18'):
  return 'Username is ' + name + ' age is ' + age
  
print(func(name='john'))