Junior
Funktsiyaga argumentlar qanday uzatiladi: havola bilan yoki qiymat bilan?
sobes.tech AI
AIdan javob
Python'da argumentlar to'g'ridan-to'g'ri referens yoki qiymat bilan o'tkazilmaydi, balki ko'pincha "pass by object reference" yoki "pass by sharing" deb ataladigan mexanizm orqali o'tkaziladi.
Bu quyidagilarni anglatadi:
- Argument funksiyaga uzatilganda, obyektga havola uzatiladi.
- Agar obyekt o'zgartiriladigan bo'lsa (masalan, ro'yxat, lug'at), funksiyada o'zgarishlar tashqarida ham ko'rinadi.
- Agar obyekt o'zgarmas bo'lsa (masalan, raqam, satr, tupl), uni o'zgartirishga urinishda yangi obyekt yaratiladi, va funksiyadan tashqaridagi asl obyekt o'zgarmas qoladi.
O'zgartiriladigan obyektlar:
# O'zgartiriladigan obyekt (ro'yxat)
def modify_list(items):
items.append(4)
my_list = [1, 2, 3]
modify_list(my_list)
# my_list endi [1, 2, 3, 4]
O'zgarmas obyektlar:
# O'zgarmas obyekt (raqam)
def modify_number(num):
num = num + 1
my_number = 5
modify_number(my_number)
# my_number hali ham 5