Special Operators

Shartli ifodalarda ishlatishingiz mumkin bo'lgan ba'zi maxsus operatorlar mavjud.

Maxsus Operatorlar

Shartli ifodalarda ishlatishingiz mumkin bo'lgan ba'zi maxsus operatorlar mavjud:

  • is - Operands bir xil bo'lganda (ya'ni, bir xil id ga ega bo'lganda) to'g'ri
  • is not - Operands bir xil bo'lmaganda to'g'ri
  • in - Qiymat kollektsiyada (ro'yxat, tuplam, to'plam va boshqalar) bo'lsa, to'g'ri
  • not in - Qiymat kollektsiyada bo'lmasa, to'g'ri

Birinchi ikkita operator identifikatsiyani sinab ko'rish uchun ishlatiladi. Sizga ikkita ob'ekt bir xil ob'ektga murojaat qilayotganini bilishingiz kerak; biz id() funksiyasidan va == yoki != dan foydalanishimiz mumkin, ammo is va is not dan foydalanish juda oson.

So'nggi ikkita operator esa a'zolikka qarash uchun: biror narsaning kollektsiyada bo'lishi - masalan, qiymatning ro'yxatda yoki kalitning lug'atda bo'lishi.

Identifikatsiyaning qanday ishlashini ko'raylik:

1 >>> x = [1, 2, 3]
2 >>> y = [1, 2, 3]
3 >>> x == y
4 True
5 >>> x is y
6 False
7 >>> id(x)
8 140328193994832
9 >>> id(y)
10 140328193887760

Kutib turing, nima? Siz x va y ga bir xil ro'yxatni belgiladingizmi? Aslida emas. Birinchi [1, 2, 3] ro'yxatni yaratadi va Python uni x ga tayinlaydi; ikkinchi [1, 2, 3] yana bir ro'yxat yaratadi va Python uni y ga tayinlaydi - bu ikki yaratilish ikki ob'ekt demakdir. Ular teng ob'ektlar bo'lsa ham, ular hali ham farq qiladi.

Keling, stringlar bilan yana bir bor sinab ko'ramiz:

1 >>> x = 'hello world'
2 >>> y = 'hello world'
3 >>> x == y
4 True
5 >>> x is y
6 False
7 >>> id(x)
8 139995196972928
9 >>> id(y)
10 139995196972984

Yaxshi ko'rinadi! Yana bir bor:

1 >>> x = 'hi'
2 >>> y = 'hi'
3 >>> x == y
4 True
5 >>> x is y
6 True

Nima bo'ldi? Keling, buni bir oz o'ylab ko'raylik... ro'yxat o'zgarmas (mutable) bo'lib, uni o'zgartirishimiz mumkin, ammo str o'zgarmas (immutable), bu esa uni o'zgartira olmaymiz. O'zgarmas ob'ektlar o'zgartirilmaydi, shuning uchun Python mavjud bo'lgan teng ob'ektlarni qayta ishlatishi mumkin, yangi ob'ektlar yaratmasligi mumkin. Shuning uchun faqat is dan foydalanishda ehtiyot bo'lishingiz kerak - is ni tenglik uchun ishlatish ba'zan tasodifan ishlaydi, ammo oxir-oqibat muvaffaqiyatsizlikka uchraydi va dasturingizda xato bo'ladi.

Siz in va not in dan kollektsiyada biror narsaning mavjudligini sinab ko'rish uchun foydalanishingiz mumkin. Python'dagi kollektsiyalar ro'yxatlar, stringlar, tuplar, lug'atlar va boshqalarni anglatadi.

Mana buni qanday ishlatishingiz mumkin:

1 >>> valid_chars = 'yn'
2 >>> char = 'x'
3 >>> if char in valid_chars:
4... print(f'{char} to\'g\'ri belgi')
5... else:
6... print(f'{char} {valid_chars} ichida emas')
7...
8 x {valid_chars} ichida emas

Bu yerda siz char ni valid_chars stringida mavjudligini tekshiryapsiz. Agar u mavjud bo'lmasa, to'g'ri harflarni chop etadi.

char ni to'g'ri belgi, masalan, kichik "y" yoki kichik "n" ga o'zgartirib, kodni yana bir bor ishga tushirib ko'ring.

Mana not in dan foydalanishning bir usuli:

1 >>> my_list = [1, 2, 3, 4]
2 >>> 5 not in my_list
3 True

Bu holatda siz butun sonning ro'yxatda yo'qligini tekshiryapsiz.

Keling, boshqa bir autentifikatsiya misolida not in dan foydalanishni ko'raylik:

1 >>> ids = [1234, 5678]
2 >>> my_id = 1001
3 >>> if my_id not in ids:
4... print('Sizning avtorizatsiyangiz yo\'q!')
5...
6 Sizning avtorizatsiyangiz yo'q!

Bu yerda sizda ma'lum bir ids to'plami mavjud. Bu ids raqamli bo'lishi mumkin, shuningdek, elektron pochta manzillari yoki boshqa narsalar bo'lishi mumkin. Har qanday holda, siz berilgan id, my_id sizning ma'lum ids ro'yxatingizda bormi yoki yo'qligini tekshirishingiz kerak. Agar u yo'q bo'lsa, unda foydalanuvchiga davom etishga ruxsat berilmasligini bildira olasiz.

Ushbu sahifada

Xato haqida xabar berish