Python хэл дээр = операторыг хувьсагчдад утга оноохдоо ашигладаг.
a = 100
b = 200
print(a)
# 100
print(b)
# 200
Дээрх жишээний нэгэн адил та олон хувьсагчдад нэг нэгээр биш нэг дор утга оноож болох бөгөөд энэ нь бичихэд зөвхөн нэг энгийн мөр код шаардлагатай тул тохиромжтой.
Дараах хоёр тохиолдлыг тайлбарлав.
- Олон хувьсагчдад олон утгыг оноох
- Олон хувьсагчдад ижил утгыг оноох
Олон хувьсагчдад олон утгыг оноох
Хувьсагч болон утгуудыг таслалаар тусгаарлах замаар олон хувьсагчдад нэгэн зэрэг олон утгыг оноож болно.
a, b = 100, 200
print(a)
# 100
print(b)
# 200
Гурав ба түүнээс дээш хувьсагч, өөр өөр төрөл тус бүрийг хүлээн зөвшөөрөх боломжтой.
a, b, c = 0.1, 100, 'string'
print(a)
# 0.1
print(b)
# 100
print(c)
# string
Хэрэв зүүн талд нэг хувьсагч байгаа бол түүнийг tuple гэж онооно.
a = 100, 200
print(a)
print(type(a))
# (100, 200)
# <class 'tuple'>
Хэрэв зүүн талд байгаа хувьсагчийн тоо баруун гар талын утгуудын тоотой таарахгүй бол ValueError алдаа гарах боловч үлдсэн хэсгийг хувьсагчид одоор нэмж жагсаалт болгон оноож болно.
# a, b = 100, 200, 300
# ValueError: too many values to unpack (expected 2)
# a, b, c = 100, 200
# ValueError: not enough values to unpack (expected 3, got 2)
a, *b = 100, 200, 300
print(a)
print(type(a))
# 100
# <class 'int'>
print(b)
print(type(b))
# [200, 300]
# <class 'list'>
*a, b = 100, 200, 300
print(a)
print(type(a))
# [100, 200]
# <class 'list'>
print(b)
print(type(b))
# 300
# <class 'int'>
Од тэмдэгт болон олон хувьсагчдад багц эсвэл жагсаалтын элементүүдийг хэрхэн оноох талаар дэлгэрэнгүй мэдээллийг дараах нийтлэлээс үзнэ үү.
Олон хувьсагчдад ижил утгыг оноох
#ERROR!
a = b = 100
print(a)
# 100
print(b)
# 100
3-аас дээш ширхэгийг хүлээн авах боломжтой.
a = b = c = 'string'
print(a)
# string
print(b)
# string
print(c)
# string
Ижил утгыг өгсний дараа тэдгээрийн аль нэгэнд өөр утгыг оноож болно.
a = 200
print(a)
# 200
print(b)
# 100
Бүхэл тоо, хөвөгч цэгийн тоо, мөр зэрэг өөрчлөгддөггүй (өөрчлөгддөггүй) объектуудын оронд жагсаалт, толь бичгийн төрлүүд зэрэг хувирдаг объектуудыг оноохдоо болгоомжтой байгаарай.
#ERROR!
a = b = [0, 1, 2]
print(a is b)
# True
a[0] = 100
print(a)
# [100, 1, 2]
print(b)
# [100, 1, 2]
Доорхтой адил.
b = [0, 1, 2]
a = b
print(a is b)
# True
a[0] = 100
print(a)
# [100, 1, 2]
print(b)
# [100, 1, 2]
Хэрэв та тэдгээрийг тусад нь боловсруулахыг хүсвэл тус бүрт нь хуваарил.
after c = []; d = [], c and d are guaranteed to refer to two different, unique, newly created empty lists. (Note that c = d = [] assigns the same object to both c and d.)
3. Data model — Python 3.10.4 Documentation
a = [0, 1, 2]
b = [0, 1, 2]
print(a is b)
# False
a[0] = 100
print(a)
# [100, 1, 2]
print(b)
# [0, 1, 2]
Хуулбарлах модульд copy() болон deepcopy() ашиглан гүехэн, гүн хуулбар үүсгэх аргууд бас байдаг.