Middle
Περνιούνται οι παράμετροι στην Python με τιμή ή με αναφορά;
sobes.tech AI
Απάντηση από AI
Στην Python, οι παράμετροι περνούν μέσω αναφοράς στο αντικείμενο (pass-by-object-reference). Αυτό σημαίνει ότι η συνάρτηση λαμβάνει μια αναφορά στο αντικείμενο, όχι ένα αντίγραφο της τιμής. Ωστόσο, η συμπεριφορά εξαρτάται από την μεταβλητότητα του αντικειμένου:
- Για μεταβλητά αντικείμενα (π.χ., λίστες, λεξικά), οι αλλαγές μέσα στη συνάρτηση αντικατοπτρίζονται στο αρχικό αντικείμενο.
- Για αμετάβλητα αντικείμενα (π.χ., αριθμούς, συμβολοσειρές, πλειάδες), οποιαδήποτε προσπάθεια αλλαγής του αντικειμένου μέσα στη συνάρτηση δημιουργεί ένα νέο αντικείμενο, αφήνοντας το αρχικό ανέπαφο.
Παράδειγμα:
def modify_list(lst):
lst.append(4)
my_list = [1, 2, 3]
modify_list(my_list)
print(my_list) # [1, 2, 3, 4]
def modify_int(x):
x += 1
num = 5
modify_int(num)
print(num) # 5
Επομένως, μπορούμε να πούμε ότι οι παράμετροι περνούν μέσω αναφοράς, αλλά η συμπεριφορά μοιάζει με την περνοή μέσω τιμής για αμετάβλητα αντικείμενα.