Python дээр олон хувьсагчдад олон эсвэл ижил утгыг оноож байна

Бизнес эрхэлдэг

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() ашиглан гүехэн, гүн хуулбар үүсгэх аргууд бас байдаг.

Copied title and URL