Sobes.tech
Junior

როგორ გადაეცემა არგუმენტები ფუნქციას: რჩევით თუ მნიშვნელობით?

sobes.tech AI

პასუხი AI-სგან

Python-ში არგუმენტები არ გადაეცემა ზუსტად რეფერენცით და არც ზუსტად მნიშვნელობით, არამედ მექანიზმით, რომელსაც ხშირად უწოდებენ "pass by object reference" ან "pass by sharing".

ეს ნიშნავს შემდეგს:

  • როდესაც არგუმენტი გადაეცემა ფუნქციას, გადაეცემა რეფერენცია ობიექტზე.
  • თუ ობიექტი მუტაბლია (მაგალითად, სია, ლექსიკონი), ცვლილებები ფუნქციის შიგნით კი იქნება ხილული მის გარეთ.
  • თუ ობიექტი იმუტაბლია (მაგალითად, რიცხვი, სტრიქონი, ტუპლი), მისი შეცვლის მცდელობა ფუნქციის შიგნით გამოიწვევს ახალი ობიექტის შექმნას, ხოლო ორიგინალი ობიექტი გარეთ დაურჩება უცვლელად.

მუტაბლ ობიექტები:

# მუტაბლ ობიექტი (სია)
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