Sobes.tech
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

Επομένως, μπορούμε να πούμε ότι οι παράμετροι περνούν μέσω αναφοράς, αλλά η συμπεριφορά μοιάζει με την περνοή μέσω τιμής για αμετάβλητα αντικείμενα.