2013-09-11 4 views
6

меня есть некоторая путаница по поводу значений тестирования, которые назначены Ложными, TrueСравнение True False путаницы

Для проверки истинного значения, мы можем просто только

a = True 
if (a): 

как о Ложном?

a=False 
if (a) <--- or should it be if (a==False), or if not a ? 
+0

Вам не нужны скобки. – rlms

ответ

21

Python Style Guide Из:

Для последовательностей, (строки, списки, кортежи), использовать тот факт, что пустые последовательности являются ложными.

Yes: if not seq: 
    if seq: 

No: if len(seq) 
    if not len(seq) 

[..]

Не сравнить логические значения Истина или Ложь, используя ==.

Yes: if greeting: 
No: if greeting == True: 
Worse: if greeting is True: 
+1

+1 для того, чтобы быть наиболее правильным и привязываться к руководству по стилю. –

3

использование not:

if not a: 
    .... 
    # If a is the empty value like '', [],(), {}, or 0, 0.0, ..., False 
    # control flow also reach here. 

или is False:

if a is False: 
    .... 
+4

+1 для супер соответствующего имени пользователя. – myusuf3

+2

@ myusuf3 wow - я меняю свое имя на Python, затем ... easy upvotes :) –

+0

@JonClements вам нужно будет быть более оригинальным, а также метафорический +1 ответ тоже был хорош. – myusuf3

0

Чтобы проверить, является ли значение верно:

if a: 
    pass 

Чтобы проверить, является ли значение не true:

if not a: 
    pass 

Однако not a: является True (и верно) для целей, отличных False значений, например. None, 0 и пустые контейнеры.

Если вы хотите, чтобы проверить, является ли значение True или False (хотя обычно не делают) попробовать:

if a is True: 
    pass 

или

if a is False: 
    pass 

Edit: для проверки, если значение являетсяTrue или False кажется, что вы должны использовать if isinstance(a, bool) and a, и if isinstance(a, bool) and not a

+1

'is' не более pythonic, чем' == ', он имеет просто другую семантику – KillianDS

+1

Это также не означает то же самое. 'is' для идентификации,' == 'для равенства. –

+0

Руководство по стилю Python говорит, что это более Pythonic для одиночных игр, поэтому я бы подумал, что было бы лучше в редких случаях, когда вы хотите сравнить с «True» или «False», а не просто с логическим значением чего-то. – rlms

Смежные вопросы