Python məntiqi (Boolean) əməliyyatları yerinə yetirmək üçün məntiqi operatorları təmin edir.(and
,or
,not
)
if ifadəsində çoxlu şərtlər arasındakı əlaqəni təsvir etmək üçün istifadə olunur.
Bu bölmə aşağıdakıları təsvir edir.
- kəsişmə:
and
- məntiqi əlavə:
or
- inkar:
not
and
,or
,not
Operatorun üstünlüyü
Bundan əlavə, aşağıdakı məqamlar xəbərdarlıq kimi izah olunur.
- booldan başqa tipli obyektlər üçün məntiqi operatorlar
and
,or
Bu qaytarılan dəyərlər mütləq bool tipli deyil.- Qısa qapanma (qısa qapanma qiymətləndirməsi)
kəsişmə:and
və iki dəyərin məntiqi məhsulunu qaytarır.
print(True and True)
# True
print(True and False)
# False
print(False and True)
# False
print(False and False)
# False
Əslində, çox vaxt doğru və ya yalan üçün deyil, müqayisə operatorlarından istifadə edərək şərti ifadələr üçün istifadə olunur. Məlumatınız üçün müqayisə operatorları aşağıdakılardır.
<
>
a = 10
print(0 < a)
# True
print(a < 100)
# True
print(0 < a and a < 100)
# True
və aşağıdakı kimi birləşdirilə bilər.
print(0 < a < 100)
# True
məntiqi əlavə:or
və ya iki dəyərin məntiqi OR-unu qaytarır.
print(True or True)
# True
print(True or False)
# True
print(False or True)
# True
print(False or False)
# False
inkar:not
not” dəyərin inkarını qaytarır; true və false əksinədir.
print(not True)
# False
print(not False)
# True
and,or,notOperatorun üstünlüyü
Bu məntiqi operatorların üstünlük sırası aşağıdakı kimidir: not ən yüksəkdir.
not
and
or
Aşağıdakı nümunə kodda yuxarıdakı ifadə aşağıdakı kimi şərh olunur. Əlavə mötərizələrlə bağlı problem olmadığı üçün bu nümunə kimi hallarda onları aydın şəkildə təsvir etmək daha asan ola bilər.
print(True or True and False)
# True
print(True or (True and False))
# True
Əgər siz və ya ondan əvvəl işləmək istəyirsinizsə, mötərizələrdən() istifadə edin.
print((True or True) and False)
# False
<
,>
Bu müqayisə operatorları daha yüksək üstünlüklərə malikdirlər. Buna görə də, yuxarıdakı nümunədə olduğu kimi, hər bir müqayisə əməliyyatı üçün mötərizə lazım deyil.
print(0 < a and a < 100)
# True
Python-da operator üstünlüyünün xülasəsi üçün aşağıdakı rəsmi sənədlərə baxın.
booldan başqa tipli obyektlər üçün məntiqi operatorlar
With these logical operators, not only bool types (true, false), but also numbers, strings, lists, etc. are processed as boolean values.
Aşağıdakı obyektlər Python-un məntiqi əməliyyatlarında yalan hesab olunur.
- Sabitlər yanlış olaraq təyin olunur:
None
,false
- Rəqəm tiplərində sıfır:
0
,0
,0j
,Decimal(0)
,Fraction(0, 1)
- Boş ardıcıllıq və ya kolleksiya:
'
,()
,[]
,{}
,set()
,range(0)
Bütün digər dəyərlər doğru hesab olunur.
bool() funksiyası obyektin boolean dəyərini almaq üçün istifadə edilə bilər. Qeyd edək ki, ‘0’ və ya ‘Yanlış’ sətirləri doğru hesab olunur.
print(bool(10))
# True
print(bool(0))
# False
print(bool(''))
# False
print(bool('0'))
# True
print(bool('False'))
# True
print(bool([]))
# False
print(bool([False]))
# True
Sətirdə ‘0’ və ya ‘yanlış’ı false kimi idarə etmək üçün distutils.util.strtobool() istifadə edin.
and,orBu qaytarılan dəyərlər mütləq bool tipli deyil.
Burada hər bir operatorun nəticəsini ədədi dəyərdə göstərən bool tipindən başqa obyekt nümunəsidir.
x = 10 # True
y = 0 # False
print(x and y)
# 0
print(x or y)
# 10
print(not x)
# False
Yuxarıdakı misaldan göründüyü kimi, və və ya Python-da bool tipində doğru və ya false deyil, doğru və ya yalan olmasından asılı olaraq dəyəri sol və ya sağa qaytarın. Nümunə rəqəmsaldır, lakin eyni şey sətirlər və siyahılar kimi digər növlərə də aiddir. Yeri gəlmişkən, not bool tipli doğru və ya yalanı qaytarır.
və və ya qaytarma dəyərlərinin tərifləri aşağıdakı kimidir.
The expression x and y first evaluates x; if x is false, its value is returned; otherwise, y is evaluated and the resulting value is returned.
The expression x or y first evaluates x; if x is true, its value is returned; otherwise, y is evaluated and the resulting value is returned.
6.11. Boolean operations — Expressions — Python 3.10.1 Documentation
Sol və sağ ifadələrin dəyərləri ayrı-ayrılıqda doğru və yalan olduqda, qaytarılan dəyərləri başa düşmək asandır. Digər tərəfdən, hər ikisi doğrudursa və ya hər ikisi yanlışdırsa, qaytarma dəyəri sifarişdən asılı olaraq fərqli olacaq.
Əgər siz onu if ifadəsində və s.-də şərti ifadə kimi istifadə etsəniz, nəticə boolean dəyər kimi qiymətləndirilir və emal edilir, ona görə də bu barədə narahat olmağa ehtiyac yoxdur, lakin sonrakı emal üçün qaytarılan dəyərdən istifadə edirsinizsə, siz diqqətli olmaq lazımdır.
x = 10 # True
y = 100 # True
print(x and y)
# 100
print(y and x)
# 10
print(x or y)
# 10
print(y or x)
# 100
x = 0 # False
y = 0.0 # False
print(x and y)
# 0
print(y and x)
# 0.0
print(x or y)
# 0.0
print(y or x)
# 0
print(bool(x and y))
# False
Əgər onu doğru və ya yalan hesab etmək istəyirsinizsə, sonuncu misaldakı kimi edə bilərsiniz.bool(x and y)
və və ya geri qaytarılan dəyərlər aşağıdakı cədvəldə ümumiləşdirilmişdir.
x | y | x and y | x or y |
---|---|---|---|
true | false | y | x |
false | true | x | y |
true | true | y | x |
false | false | x | y |
Qısa qapanma (qısa qapanma qiymətləndirməsi)
Yuxarıdakı cədvəldən göründüyü kimi, x və y-də x yanlışdırsa və ya x və ya y-də x doğrudursa, y-nin dəyərindən asılı olmayaraq qaytarılan dəyər x olacaqdır.
Belə olan halda y qiymətləndirilmir.
and
,or
Nəzərə alın ki, bəzi emal etmək üçün bu proseslərin sağ tərəfindəki funksiya və ya metodu çağırsanız, sol tərəfdəki nəticədən asılı olaraq proses icra olunmaya bilər.
def test():
print('function is called')
return True
print(True and test())
# function is called
# True
print(False and test())
# False
print(True or test())
# True
print(False or test())
# function is called
# True