2014-11-03 2 views
0

Что такое питонический способ написать условие, которое проверяет, что обе переменные не могут быть ни одной, и обе переменные также не могут быть не None. НапримерPythonic способ сделать xor test

if a is None and b is None: raise SystemExit(1) 
if a is not None and b is not None: raise SystemExit(1) 
# rest of the code 
+0

Выглядит достаточно вещий мне. В чем же проблема? –

+2

Вы используете 'pass' здесь, потому что у вас есть инструкция' else'? В этом случае почему бы не использовать 'if a is None или b is None:' для противоположного теста? –

+0

@MartijnPieters Если оба 'a' и' b' являются None, я создам исключение, которое этот класс должен использовать, по крайней мере, для одного из этих аргументов. – yayu

ответ

-1

Вы можете попробовать if all((a,b is not None)): pass

In [31]: a = 1 

In [32]: b = 1 

In [33]: all((a,b is not None)) 
Out[33]: True 

In [34]: b = None 

In [35]: all((a,b is not None)) 
Out[35]: False 

Примечание: Установка либо ценности a или b к 0 даст True

Pythonic?

In [36]: len('if a is not None and b is not None') 
Out[36]: 34 

In [37]: len('all((a,b is not None))') 
Out[37]: 22 
+0

OP хочет выполнить XOR-тест, например. ** один ** из двух ** должен быть «Нет», а другой ** не должен быть «Нет». –

+0

@MartijnPieters: У вас возник вопрос очень хорошо? OP сказал ', который проверяет, что обе переменные не могут быть ни одним, и обе переменные также не могут быть не None'. – Yax

+0

Вопрос намного понятнее, чем в начале, но читайте комментарии к сообщению. ОП запрашивает операцию XOR. –

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