Питхон обезбеђује логичке операторе за обављање логичких (Боолеан) операција.(and
,or
,not
)
Користи се за описивање односа између више услова у иф наредби.
Овај одељак описује следеће.
- раскрсница:
and
- логичан додатак:
or
- порицање:
not
and
,or
,not
Приоритет оператера
Поред тога, следеће тачке су објашњене као упозорења.
- Логички оператори за објекте типа који није боол
and
,or
Ове повратне вредности нису нужно типа боол.- Кратки спој (процена кратког споја)
раскрсница:and
и враћа логички производ две вредности.
print(True and True)
# True
print(True and False)
# False
print(False and True)
# False
print(False and False)
# False
У ствари, често се не користи за тачно или нетачно, већ за условне изразе који користе операторе поређења. За вашу информацију, оператори поређења су следећи.
<
>
a = 10
print(0 < a)
# True
print(a < 100)
# True
print(0 < a and a < 100)
# True
и може се спојити на следећи начин.
print(0 < a < 100)
# True
логичан додатак:or
или враћа логичко ИЛИ две вредности.
print(True or True)
# True
print(True or False)
# True
print(False or True)
# True
print(False or False)
# False
порицање:not
нот“ враћа негацију вредности; труе и фалсе су обрнути.
print(not True)
# False
print(not False)
# True
and,or,notПриоритет оператера
Редослед приоритета ових логичких оператора је следећи: не је највиши.
not
and
or
У следећем узорку кода, горњи израз се тумачи као да је онај испод. Пошто нема проблема са додатним заградама, можда ће бити лакше јасно их описати у случајевима као што је овај пример.
print(True or True and False)
# True
print(True or (True and False))
# True
Ако желите да оперишете или пре и, користите заграде().
print((True or True) and False)
# False
<
,>
Ови оператори поређења имају чак и већи приоритет него не. Према томе, заграде нису неопходне за сваку операцију поређења, као што је био случај у горњем примеру.
print(0 < a and a < 100)
# True
Погледајте званичну документацију у наставку за резиме приоритета оператора у Питхон-у.
Логички оператори за објекте типа који није боол
With these logical operators, not only bool types (true, false), but also numbers, strings, lists, etc. are processed as boolean values.
Следећи објекти се сматрају нетачним у Питхон-овим логичким операцијама.
- Константе дефинисане као нетачне:
None
,false
- Нула у нумеричким типовима:
0
,0
,0j
,Decimal(0)
,Fraction(0, 1)
- Празна секвенца или збирка:
'
,()
,[]
,{}
,set()
,range(0)
Све остале вредности се сматрају истинитим.
Функција боол() се може користити за добијање логичке вредности објекта. Имајте на уму да се стринг ‘0’ или ‘Фалсе’ сматра тачним.
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
Да обрадите ‘0’ или ‘фалсе’ у низу као фалсе, користите дистутилс.утил.стртобоол().
and,orОве повратне вредности нису нужно типа боол.
Ево примера објекта који није боол тип, који приказује резултат сваког оператора на нумеричкој вредности.
x = 10 # True
y = 0 # False
print(x and y)
# 0
print(x or y)
# 10
print(not x)
# False
Као што можете видети из примера изнад, и и или у Питхон-у не враћају труе или фалсе типа боол, већ враћају вредност са леве или десне стране у зависности од тога да ли је тачна или нетачна. Пример је нумерички, али исто важи и за друге типове као што су стрингови и листе. Узгред, не враћа труе или фалсе типа боол.
Дефиниције повратних вредности и и или су следеће.
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
Када су вредности левог и десног израза одвојено истините и нетачне, повратне вредности је лако разумети. С друге стране, ако су оба тачна или су оба лажна, повратна вредност ће бити различита у зависности од редоследа.
Ако га користите као условни израз у изјави иф, итд., резултат се оцењује као логичка вредност и обрађује, тако да не морате да бринете о томе, али ако повратну вредност користите за даљу обраду, треба бити опрезан.
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
Ако желите да га третирате као истинито или нетачно, можете учинити као у последњем примеру.bool(x and y)
Повратне вредности и и или су сажете у табели испод.
x | y | x and y | x or y |
---|---|---|---|
true | false | y | x |
false | true | x | y |
true | true | y | x |
false | false | x | y |
Кратки спој (процена кратког споја)
Као што можете видети из горње табеле, ако је к нетачно у к и и, или ако је к тачно у к или и, повратна вредност ће бити к без обзира на вредност и.
У таквом случају, и се не вреднује.
and
,or
Имајте на уму да ако позовете функцију или метод на десној страни ових процеса да бисте обавили неку обраду, процес се можда неће извршити у зависности од резултата на левој страни.
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