Στο μέλλον να σε παρακαλέσω να αναφέρεις και το σύνδεσμο από πού βρίσκεις τον κώδικα που δίνεις.

yodan000 έγραψε:- Κώδικας: Επιλογή όλων
#!/usr/bin/python
# Filename: keyword_only.py
def total(initial=5, *numbers, vegetables):
count = initial
for number in numbers:
count += number
count += vegetables
return count
print(total(10, 1, 2, 3, vegetables=50))
print(total(10, 1, 2, 3))
# Raises error because we have not supplied a default argument value for 'vegetables'
τι ακριβώς σημαίνει αυτό;
Αυτό νομίζω δουλεύει με python3. Τα initial=5, *numbers, vegetables λέγονται arguments του def total.
- Κάποια arguments είναι
υποχρεωτικά και δεν έχουν default/προεπιλεγμένη τιμή -- αυτό είναι το
vegetables.
- Κάποια
δεν είναι υποχρεωτικά και έχουν default/προεπιλεγμένη τιμή -- αυτό είναι το
initial με default τιμή τον αριθμό 5.
- Το αστεράκι μπροστά στο argument "*numbers" σημαίνει ένα ή περισσότερα arguments. Τα arguments του numbers θα μπουν σε λίστα (list) την οποία το πρόγραμμα «μετράει».
Το παράδειγμα που έδωσες δε δουλεύει με python2. Πρέπει να χρησιμοποιήσεις το
python3. Και κανονικά θα σύστηνα να βάλεις με σειρά προτεραιότητας τα σημαντικά arguments, αυτά που
δεν έχουν προεπιλεγμένη τιμή και πρέπει ο προγραμματιστής να θέσει όταν καλεί το total. Έτσι το σωστό κατά την άποψη μου θα ήταν:
- Κώδικας: Επιλογή όλων
#!/usr/bin/python3
# Filename: keyword_only.py
def total(vegetables, *numbers, initial=5):
count = initial
for number in numbers:
count += number
count += vegetables
return count
To def total() προσθέτει τους αριθμούς που δίνεις ως arguments. Έτσι έχουμε:
- Κώδικας: Επιλογή όλων
print(total())
Δίνει αποτέλεσμα error -- πρέπει να θέσεις την υποχρεωτική τιμή του vegetables.
- Κώδικας: Επιλογή όλων
print(total(1))
Δίνει αποτέλεσμα 6 -- έθεσες την υποχρεωτική τιμή vegetables ως 1. Δεν έθεσες την τιμή του argument numbers (οπόταν 0) ούτε του initial (προεπιλεγμένη τιμή 5). Συνοψίζοντας: 1+0+5 = 6
- Κώδικας: Επιλογή όλων
print(total(1,2))
Δίνει αποτέλεσμα 8 -- έθεσες την υποχρεωτική τιμή vegetables ως 1. Έθεσες την τιμή του argument numbers (οπόταν 2), δεν έθεσες το initial (προεπιλεγμένη τιμή 5). Συνοψίζοντας: 1+2+5 = 8
- Κώδικας: Επιλογή όλων
print(total(1,2,3))
Δίνει αποτέλεσμα 11 -- έθεσες την υποχρεωτική τιμή vegetables ως 1. Έθεσες την τιμή του argument numbers (οπόταν 2 + 3), δεν έθεσες το initial (προεπιλεγμένη τιμή 5). Συνοψίζοντας: 1+2+3+5 = 11
- Κώδικας: Επιλογή όλων
print(total(1,2,5,initial=7))
Δίνει αποτέλεσμα 15 -- έθεσες την υποχρεωτική τιμή vegetables ως 1. Έθεσες την τιμή του argument numbers (οπόταν 2 + 5), έθεσες το initial (οπόταν 7). Συνοψίζοντας: 1+2+5+7 = 15
- Κώδικας: Επιλογή όλων
print(total(1,2,5,initial=7))
Δίνει αποτέλεσμα 15 -- έθεσες την υποχρεωτική τιμή vegetables ως 1. Έθεσες την τιμή του argument numbers (οπόταν 2 + 5), έθεσες το initial (οπόταν 7). Συνοψίζοντας: 1+2+5+7 = 15
- Κώδικας: Επιλογή όλων
print(total(1,initial=7))
Δίνει αποτέλεσμα 8 -- έθεσες την υποχρεωτική τιμή vegetables ως 1. Δεν έθεσες την τιμή του argument numbers (οπόταν 0), έθεσες το initial (οπόταν 7). Συνοψίζοντας: 1+7 = 8