[Python-Dev] Proposed unittest changes

Steve Holden steve at holdenweb.com
Mon Jul 14 03:06:10 CEST 2008


Tim Peters wrote:
> [Michael Foord]
>>> ...
>>> Adding the following new asserts:
>>>
>>> ...
>>>   assertNotIs   (first, second, msg=None)
> 
> [Steve Holden]
>> Please, let's call this one "assertIsNot".
> 
> +1
> 
>> I know it's valid Python to say
>>
>>  if a not is b:
> 
> Nope, that's a syntax error.
> 
Rats, naturally I was thinking of "if not (a is b):"

>> but it's a much less natural way of expressing the condition, and (for all I
>> know) might even introduce an extra negation operation. "is not" is, I
>> believe, treated as a single operator.
> 
> "is not" and "not in" are both binary infix operators, not to be
> confused with the distinct use of "not" on its own as a unary prefix
> operator.  "not is" and "in not" are both gibberish.
> 
>>>> 1 is not 2
> True
>>>> 1 is (not 2)
> False
>>>> 1 not is 2
> SyntaxError: invalid syntax
> 
>>>> 1 not in [2]
> True
>>>> 1 in not [2]
> SyntaxError: invalid syntax
>>>> 1 in (not [2])
> Traceback (most recent call last):
>    ...
> TypeError: argument of type 'bool' is not iterable

regards
  Steve
-- 
Steve Holden        +1 571 484 6266   +1 800 494 3119
Holden Web LLC              http://www.holdenweb.com/



More information about the Python-Dev mailing list