Junior
Πώς περνιούνται τα επιχειρήματα σε μια συνάρτηση: με αναφορά ή με τιμή;
sobes.tech AI
Απάντηση από AI
Στην Python, τα επιχειρήματα δεν περνούν ακριβώς με αναφορά ή ακριβώς με τιμή, αλλά μέσω ενός μηχανισμού που συχνά ονομάζεται "pass by object reference" ή "pass by sharing".
Αυτό σημαίνει τα εξής:
- Όταν περνάτε ένα επιχείρημα σε μια συνάρτηση, περνάει μία αναφορά στο αντικείμενο.
- Αν το αντικείμενο είναι μεταβλητό (π.χ. μια λίστα, ένα λεξικό), οι αλλαγές μέσα στη συνάρτηση θα είναι ορατές και έξω από αυτή.
- Αν το αντικείμενο είναι αμετάβλητο (π.χ. ένας αριθμός, μια συμβολοσειρά, ένα tuple), κατά την προσπάθεια τροποποίησής του μέσα στη συνάρτηση, θα δημιουργηθεί ένα νέο αντικείμενο, και το αρχικό αντικείμενο έξω από τη συνάρτηση θα παραμείνει αμετάβλητο.
Μεταβλητά αντικείμενα:
# Μεταβλητό αντικείμενο (λίστα)
def modify_list(items):
items.append(4)
my_list = [1, 2, 3]
modify_list(my_list)
# my_list τώρα είναι [1, 2, 3, 4]
Αμετάβλητα αντικείμενα:
# Αμετάβλητο αντικείμενο (αριθμός)
def modify_number(num):
num = num + 1
my_number = 5
modify_number(my_number)
# my_number παραμένει 5